class Top{
public Top(String s){System.out.print("B");}
}
public class Bottom2 extends Top{
public Bottom2(String s){System.out.print("D");}
public static void main(String args[]){
new Bottom2("C");
System.out.println(" ");
} }
在上面的程序中,我猜测输出必须是BD
,但在书中他们说编译失败了。谁能解释一下呢?
答案 0 :(得分:3)
派生类Bottom2
需要使用super
调用基类构造函数,否则会出现编译错误。例如,如果你这样做,它将编译:
public Bottom2(String s) { super(s); System.out.print("D"); }
答案 1 :(得分:2)
当你有公共Top(String s)时,java不会创建没有参数的默认构造函数,那么当你编写子类时,构造函数会查找默认构造函数(因为你没有明确地调用)...那么汇编失败了。