1
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. 誰でもこれを説明できますか?

4

2 に答える 2

3

派生クラスBottom2は、 を使用して基本クラス コンストラクターを呼び出す必要がありsuperます。そうしないと、コンパイル エラーが発生します。たとえば、これを行うと、次のようにコンパイルされます。

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

サブクラス コンストラクター のセクションを参照してください。

于 2010-07-13T03:35:49.783 に答える
2

public Top(String s) がある場合、Javaは引数なしでデフォルトのコンストラクターを作成しません。子クラスを作成すると、コンストラクターはデフォルトのコンストラクターを探します(明示的に呼び出していないため)...その後、コンパイル失敗します。

于 2010-07-13T03:36:58.890 に答える