大家帮忙看看这段程序的输出结果,程序好纠结啊
- Java code
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 l = new Lettuce(); public Sandwich() { print("Sandwich()"); } public static void main(String[] args) { new Sandwich(); }}
[解决办法]
System.out.print
[解决办法]
是不是:
Meal()
Lunch()
PortableLunch()
Bread()
Cheese()
Lettuce
Sandwich()
[解决办法]
可以看看:
http://wenwen.soso.com/z/q191435823.htm
[解决办法]
这个 你自己 考虑一下 初始化的 顺序吧
父类构造函数的调用是在调用 子类的构造函数的时候 开始的 ,
父类的构造顺序 跟子类是一致的
构造顺序 一般 就是
1.成员变量
2.包括静态变量和静态数据块,
3.然后构造函数
4.赋值问题
我自己总结的 求大神 指正
[解决办法]
加载一个类时,先看有没有父类,如果有的话先加载父类,而加载一个类的顺序是静态代码块,静态属性,属性,构造方法,父类加载完后子类也按照这种顺序加载。这样就有了上面的结果。。。