当前位置: 技术问答>java相关
scjp考题一问
来源: 互联网 发布时间:2015-05-27
本文导语: 69. class Super{ public int i=0; public Super(String text){ i=1; } } public class Sub extends Super{ public Sub(String text){ i=2; } publ...
69. class Super{
public int i=0;
public Super(String text){
i=1;
}
}
public class Sub extends Super{
public Sub(String text){
i=2;
}
public static void main(String args[]){
Sub sub=new Sub("Hello");
System.out.println(sub.i);
}
}
what is the result?
A. compile will fail
B. compile success and print "0"
C. compile success and print "1"
D. compile success and print "2"
我认为应该选D阿,但编译说错,我认为没错阿!
疑惑中。。。。。。。
public int i=0;
public Super(String text){
i=1;
}
}
public class Sub extends Super{
public Sub(String text){
i=2;
}
public static void main(String args[]){
Sub sub=new Sub("Hello");
System.out.println(sub.i);
}
}
what is the result?
A. compile will fail
B. compile success and print "0"
C. compile success and print "1"
D. compile success and print "2"
我认为应该选D阿,但编译说错,我认为没错阿!
疑惑中。。。。。。。
|
Sub的构造方法中会默认加载父类Super的构造函数:super()
就是说会调用其默认构造方法。但Super中无默认构造方法。
所以要编译通过,要在Super类中添加:
public Super(){}
这一方法就可以了吧。
就是说会调用其默认构造方法。但Super中无默认构造方法。
所以要编译通过,要在Super类中添加:
public Super(){}
这一方法就可以了吧。
|
或者sub的构造函数改为
public Sub(String text){
super(text);
i=2;
}
public Sub(String text){
super(text);
i=2;
}
|
如果你定义了一个或一个以上带有参数的构造函数,系统就不会为你添加空的构造函数。