I think this is a problem of both readability and not suggesting intent. You speak
Java generates an empty default constructor; why can't he call it backstage in this case?
However, for me it would be far more sensible for Java to implicitly call the Super(A) constructor behind the scenes than to call the Super() constructor without paying attention to A
And you have it. We already have two disparate assumptions about what should (or may) happen in this case.
One of the basic principles of the Java language is transparency. As much as possible, the programmer should be able to see, looking through the code, what will happen, sometimes due to convenience or magic at the syntax level.
The parallel principle does not imply intent: in cases where the programmer's intentions seem ambiguous, the Java language sometimes prefers a compilation error, and does not automatically use the default value using some (arbitrary or other) selection algorithm.
source share