标题: 关于继承的疑问 [打印本页] 作者: 周兴华 时间: 2012-8-19 19:50 标题: 关于继承的疑问 下面的代码我有点搞晕了,为什么运行结果是YXYZ呢?
class X {
Y b = new Y();
X() {
System.out.print("X");
}
}
class Y {
Y() {
System.out.print("Y");
}
}
public class Z extends X {
Y y = new Y();
Z() {
System.out.print("Z");
}
public static void main(String[] args) {
new Z();
}
}作者: 李杰 时间: 2012-8-19 20:22
class X {
Y b = new Y(); ---------1
X() {
System.out.print("X"); ---------------2
}
}
class Y {
Y() {
System.out.print("Y");
}
}
public class Z extends X {
Y y = new Y(); ----------------------3
Z() {
System.out.print("Z"); ------------------------4
}
public static void main(String[] args) {
new Z();
}
}
这个问题就看你了解java加载顺序,这段代码由于有父类,先加载父类的
实例变量,然后是父类的构造函数,接着是子类
作者: 周兴华 时间: 2012-8-19 22:30
明白了,谢谢!作者: 黑马-李勇 时间: 2012-8-19 22:47
class X { 3创建y
Y b = new Y();
X() { 5输出x
System.out.print("X");
}
}
class Y { 4输出Y 7 输出y
Y() {
System.out.print("Y");
}
}
public class Z extends X { 2 有父类x
Y y = new Y(); 6创建y
Z() { 8输出x
System.out.print("Z");
}
public static void main(String[] args) {
new Z(); 1创建一个z
}
}