Сомнение на основе программы в SCJP (ЭКЗАМЕН 310-065)

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, но в книге сказано, что компиляция не удалась. Кто-нибудь может это объяснить?


person Pavalesh    schedule 13.07.2010    source источник
comment
А вы пробовали сами скомпилировать программу, чтобы посмотреть?   -  person Stephen C    schedule 13.07.2010


Ответы (2)


Производный класс Bottom2 требуется для вызова конструктора базового класса с помощью super, иначе вы получите ошибку компиляции. Например, если вы сделаете это, он скомпилирует:

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

См. раздел о конструкторах подклассов. .

person casablanca    schedule 13.07.2010

Когда у вас есть общедоступный Top (String s), тогда java не создает конструктор по умолчанию без аргументов, тогда, когда вы пишете дочерний класс, конструктор ищет конструктор по умолчанию (потому что вы не вызываете явно)... затем компиляции терпит неудачу.

person leo    schedule 13.07.2010