Abstract means a couple things in Java. One is you can't make an instance. So the reason you can't make an instance is because that's what the designers decided abstract means.
The other thing it means is the class is allowed to be incomplete. It might say it implements an interface but doesn't implement all the methods. Or it might declare a method signature without a method body.
It's often handy to provide a partial implementation but require some subclass to fill in the missing bits. For example, the documentation for AbstractList says This class provides a skeletal implementation of the List interface to minimize the effort required to implement this interface backed by a "random access" data store (such as an array). It just makes life easier for someone who wants implement List. [ October 19, 2007: Message edited by: Stan James ]
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi