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.