This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
This can be a bit confusing. You can't construct an abstract class directly. But it can have a constructor. This is so, as Rob points out, its constructor gets called either implicitly via constructor chaining or explicitly (via the super keyword) to allow for it to be constructed (and have values initialized or what have you). Take Rob's suggestion and try some examples.
Of course you need a constructor for an abstract class. I sometime quote an example like this:where the Vehicle class is abstract. But all vehicles have common characteristics.Now, the way I look on subclasses is that they incorporate a part from the superclass, which I am sure is not quite accurate. A Car or a Bus is a Vehicle, and they have number plates (only they are called something different in different countries), so when you write the constructor for a Car it would include "super(numberPlate);" That means you are instantiating the "Vehicle" part. Then you can instantiate the "Car" part, in the rest of the constructor.
In fact every class has a constructor; if you don't write one the compiler will add a default constructor for you.