To use one of my favorite examples:
Say you were a god and were creating the world using
Java. When it came to life, you might have a class:
It is useful to have the "die" method in this class since all LivingThings must be able to use this method, but it makes not sense to have an instance of a "LivingThing." The concept is jsut to vague.
You can then have subclasses. Animalia extends LivingThing, Chordata extends Animalia, Mamalia extends Chordata, etc. All of these would be abstract calsses because, while they provde functionality, it makes no sense to create an instance of a Chordata.
The leaves of this tree would all be concrete, however (how's that for an image? Concrete tree leaves...)
EmperorPenguin extends PenguinFamily, HomoSapiens extends Primate, Ceolocanth extends Fish, etc.
Now, of course, interfaces can be used to group similar things. For example, both Fish and PenguinFamily would implement the Swimmer interface (even though they might implement it differently) A FruitBat class, the Bird class, and several Insect classes would implement the Flyer interface.