/*演示构造器的调用顺序
*一,调用基类构造器,反复递归到根,首先构造根
*二,按声明顺序调用成员的初始化方法
*三,调用导出类构造器主体;
*总结,必须首先调用父类的构造器保证继承下来的成员得到初始化;
* 然后按顺序执行成员的初始化方法,最后才能顺利调用导出类主体以便使用上面的成员
* 如果按照这一规则,那么就能够保证导出类的所有成员得到初始化
* 然而这样只是理想情况,重要的是知道构造器的调用顺序.
*/
import static com.futa.Print.*;
class Meal {
Meal(){print("Meal()");}
}
class Bread {
Bread(){print("Bread()");}
}
class Cheese {
Cheese(){print("Cheese()");}
}
class Lettuce {
Lettuce(){print("Lettuce()");}
}
class Lunch extends Meal{
Lunch(){print("Lunch()");}
}
class PortableLunch extends Lunch {
PortableLunch(){print("PortableLunch");}
}
public class SandWich extends PortableLunch {
private Bread b = new Bread();
private Cheese c = new Cheese();
private Lettuce let = new Lettuce();
private SandWich(){print("SandWich()");}
public static void main(String[] args) {
new SandWich();
}
}
/* 输出 : Meal()
* Lunch()
* PortableLuch()
* Bread()
* Cheese()
* Lettuce()
* SandWich()
*/
构造器调用顺序
最新推荐文章于 2022-02-25 18:19:43 发布