-----------------------------android培训、java培训、期待与您交流!----详细请查看:http://edu.csdn.net/heima---------------
1. 运行以下代码片段,输出结果是?( d )
class X {
Y b = new Y();
X() {
System.out.print("X");
}
}
class Y {
Y() {
System.out.print("Y");
}
}
public class Test extends X {
Test() {
System.out.print("Z");
}
Y y = new Y();
public static void main(String[] args) {
new Test();
}
}
运行结果是:YXYZ
当把代码红色部分上下行换个位置,如下:
class X {
X() {
System.out.print("X");
}
Y b = new Y();
}
class Y {
Y() {
System.out.print("Y");
}
}
public class Test extends X {
Y y = new Y();
Test() {
System.out.print("Z");
}
public static void main(String[] args) {
new Test();
}
}
运行结果是:YXYZ
所以结果是一样的,由此可以得出:当一个类在创建对象时,会先检测类中有没有其他的对象要创建,如果有,会先创建其他类的对象,然后再调用自己的构造方法创建自己的对象,所以不论红色代码位置怎么改变,最后运行的结果还是一样的.
--------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------
1. 运行以下代码片段,输出结果是?( d )
class X {
Y b = new Y();
X() {
System.out.print("X");
}
}
class Y {
Y() {
System.out.print("Y");
}
}
public class Test extends X {
Test() {
System.out.print("Z");
}
Y y = new Y();
public static void main(String[] args) {
new Test();
}
}
运行结果是:YXYZ
当把代码红色部分上下行换个位置,如下:
class X {
X() {
System.out.print("X");
}
Y b = new Y();
}
class Y {
Y() {
System.out.print("Y");
}
}
public class Test extends X {
Y y = new Y();
Test() {
System.out.print("Z");
}
public static void main(String[] args) {
new Test();
}
}
运行结果是:YXYZ
所以结果是一样的,由此可以得出:当一个类在创建对象时,会先检测类中有没有其他的对象要创建,如果有,会先创建其他类的对象,然后再调用自己的构造方法创建自己的对象,所以不论红色代码位置怎么改变,最后运行的结果还是一样的.
-----------------------------android培训、java培训、期待与您交流!----详细请查看:http://edu.csdn.net/heima---------------