Abstract classes are usually the Parent classes Ex. class Animal. Then you probably would have a subclass Canine Extends Animal. Then after that you may have a class Dog Extends Canine Implements Pet. The Pet Interface which you can use to be implemented on all Animal subclasses regardless of be them being class Bird for example that would implement the Pet Interface.
Now imagine you have an Animal class which is not abstract, then you may be able to create a new Animal object. But what animal could this be? So it would be better to have an abstract class Animal, which can be extended but not instantiated. [ September 03, 2005: Message edited by: Megs Maquito ]