The answer is yes. It made me curious as to why it was made technically possible in JAVA, while in C++ it is not the case [An abstract class must contain at least one pure virtual function ].
While it is a rare thing to happen and such a design should always be questioned to see if it is the right thing to do, one specific case where it is justified could be :
The abstract class partially implements an interface, with the intention that its subclasses must complete the interface. To take a slightly contrived motoring analogy, a
Chassis
class may partially implement a Vehicle
interface and provide a set of core methods from which a range of concrete Vehicle
types are extended. Chassis
is not a viable implementation of a Vehicle
in its own right, so a concrete Car
subclass would have to implement interface methods for functional wheels, engine and bodywork. from http://www.codestyle.org/java/faq-Abstract.shtml#whynoabstract !