If there is no explicit call to this(...) or super(...), the first line of a constructor is an implicit call to super() with no arguments.
A default no-args constructor will be automatically provided by the compiler only if no other constructor is provided by the programmer.
In this case, a Top constructor accepting a String is provided by the programmer, so the compiler does not provide a no-args constructor for Top. The constructor for the subclass, Bottom2, does not call super explicitly, and so super() with no arguments is implicitly called. This is a problem, because there is no such constructor.
"We're kind of on the level of crossword puzzle writers... And no one ever goes to them and gives them an award." ~Joe Strummer sscce.org