-2

Javaで別のクラスを拡張するクラスで次のことが可能かどうか疑問に思っていました。どのように?:

public class HelloWorld {
    public HelloWorld() {
        A aClass = new A(22);
    }
}

public class A extends B {
    public A() {
        System.out.println(number);
    }
}

public class B {
    public int number;

    public B(int number) {
        this.number = number;
    }
}
4

1 に答える 1

2

コンストラクターは、を使用Aしてコンストラクターにチェーンする必要があります。現時点では、唯一のコンストラクターがパラメーターを取るため、パラメーターを指定する必要があります。BsuperBint

public A(int x) {
    super(x); // Calls the B(number) constructor
    System.out.println(number);
}

でパラメーターを呼び出しているため、 にパラメーターを追加したことに注意してください。ただし、同じパラメーターを使用する必要はありません。例えば:xAHelloWorld

public A() {
    super(10);
    System.out.println(number); // Will print 10
}

次に、次のように呼び出します。

A a = new A();

すべてのサブクラス コンストラクターは、コンストラクター本体の最初のステートメントとして、同じクラス内の別のコンストラクター ( を使用this) またはスーパークラス内のコンストラクター (または暗黙的に) にチェーンされます。super連鎖が暗黙的である場合、それは常に を指定することsuper();、つまりパラメーターなしのスーパークラス コンストラクターを呼び出すことと同じです。

詳細については、JLS のセクション 8.8.7 を参照してください。

于 2013-11-04T17:22:51.700 に答える