在java中有一种说话叫继承树,这棵树描述了子类和父类的创建过程,不管我们是否使用super调用来执行父类的构造函数的初始化代码,子类构造函数总会调用父类的构造函数一次,
子类调用父类的构造函数有以下三种情况:
1.子类构造函数执行体的第一个使用super关键字,显式调用父类的构造函数,系统将根据super调用里传入的实参个数调用父类对应的构造函数。
2.子类构造函数执行体的第一行使用this显式嗲用本类中重载的构造函数,系统会根据this调用里传入的实参格式调用本类的另一个构造函数,执行本类中另一个构造函数时,即会调用父类的构造函数。
3.子类构造函数执行题中既没有super调用,也没有this调用,系统将会在执行子类构造函数之前,隐式的调用父类无参数的构造函数。
不管上面那种情况,当调用子类构造函数来初始化子类对象时,父类构造函数总会在子类构造函数执行前执行。依次类推就形成了继承树。创建java对象,最先执行的总是object类的构造函数。
关于父类和子类出现同名的变量,这个问题需要分几种情况,与变量的访问修饰符有关。
希望对你有所帮助。
|