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,但是在书中他们说编译失败。谁能解释一下?

最佳答案

派生类Bottom2是使用super调用基类构造函数所必需的,否则会出现编译错误。例如,如果您这样做,它将编译:

public Bottom2(String s) { super(s); System.out.print("D"); }


请参见the section on Subclass Constructors

07-25 21:17