动手动脑1.
运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是否是第一句,影响重大!
代码:
结果:
改变parent类之后:
结果:
但是如果把super加在后面,就会显示错误。
结论:通过 super 调用基类构造方法,必须是子类构造方法中的第一个语句。
动手动脑2.为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来?为什么不能反过来?
因为子类继承了父类,那么就默认的含有父类的公共成员方法和公共成员变量,这些方法和变量在子类里不再重复声明。所以必须先调用父类的构造函数。