如果子类构造器没有显示地调用超类的构造器,则将自动地调用超类默认(没有参数)的构造器。如果超类没有不带参数的构造器,并且在子类的构造器中有没有显示地调用超类的其他构造器,则Java编译器将报告错误。使用super调用构造器的语句必须是子类构造器的第一条语句。---------------- p153《Java核心技术卷》
通过代码解释
- 父类没有无参构造器,子类构造器没有显示调用父类其他构造器,编译错误
-
父类有无参构造器,子类构造器没有显示调用父类其他构造器,编译通过,输出“123”
-
父类没有无参构造器,子类显示调用父类其他构造器,编译通过,输出“123”
-
子类构造器显示调用父类其他构造器,super语句没有放在第一句,编译报错