Even if an abstract class cannot be directly instantiated it must still be initialized and have a constructor executed when a subclass is instantiated. This is precisely why any class without a visible constructor cannot be subclassed. In most cases this translates to "a class without a non-private constructor cannot be subclassed", however there's an exception and that is when the subclass is in the same compilation unit. Regardless, the point is that to create an instance of a class, whether it's abstract or not, it must be initialized and a constructor must be executed.
Something must be done about this. Let's start by reading this tiny ad:
Free, earth friendly heat - from the CodeRanch trailboss