以下程序的输出结果为:
class Base{
public Base(String s){ //这里是有参数,所以会编译失败
System.out.print("B");
}
}
public class Derived extends Base{
public Derived (String s) {
System.out.print("D");
}
public static void main(String[] args){
new Derived("C");
}
}//编译失败
//因为进入之后编译器会默认生成一个不带参数的super()
本题考察继承。
当子类继承父类需要先初始化继承过来的父类的成员,此时需要通过super来完成。很明显在子类的构造方法当中,并没有通过super调用父类的构造方法。
正确写法应该是:
class Base{
public Base(String s){
System.out.print("B");
}
}
public class Derived extends Base{
public Derived (String s) {
super(s);
System.out.print("D");
}
public static void main(String[] args){
new Derived("C");
}
}