继承请说明这些程序的流程

时间:2014-02-23 18:36:49

标签: java inheritance

Q值。给出:

class X {
X() { 
System.out.print(1);
}
X(int x) {
this(); System.out.print(2);
}
}
public class Y extends X {
Y() {
super(6); 
System.out.print(3);
}
Y(int y) {
this(); System.out.println(4);
}
public static void main(String[] a) 
{ 
new Y(5);
}
}

结果(选项)

A. 13  B. 134  C. 1234  D. 2134  E. 2143

答案:C

根据我的说法,首先我们在java中使用默认超级,称为构造函数 所以在我的程序中,它首先调用默认超级并打印1 通过在我的子类中使用super,它调用了争论的构造函数AND print 2 子类通常打印3,4。

这是对的吗?如果有问题请纠正。

1 个答案:

答案 0 :(得分:0)

是的,它应该打印1234。

new Y(5) 

调用此约束器

Y(int y) {

this(); System.out.println(4);

}

通过调用“this()”将调用Y的默认约束器。

Y()  { super(6); System.out.print(3); }

这将调用X的“X(int x)”构造函数。 调用它(在X上),因此它调用X的默认构造函数。

打印“1”。 然后我们回去,打印2。 然后返回Y的默认构造函数并打印3。 最后,到Y的(int)构造函数,打印4。

打印“1234”非常困难的方法:)