4

私はEclipse Junoを使用して継承のコンストラクターを学んでいます。

childClass で ctrl+O を 2 回押すと、継承されたメンバーが表示されます。しかし、たまたま継承されたメンバーのスーパークラスのコンストラクターでさえ見られます

しかし、コンストラクタは継承されないと言われています...

誰かがこの動作を説明できますか?

4

4 に答える 4

8

フィールド、メソッド、およびネストされたクラスとは異なり、コンストラクターはクラス メンバーではありません。

継承のドキュメントから

サブクラスは、そのスーパークラスからすべてのメンバー (フィールド、メソッド、およびネストされたクラス) を継承します。コンストラクターはメンバーではないため、サブクラスに継承されませんが、スーパークラスのコンストラクターはサブクラスから呼び出すことができます。

しかし 、なぜコンストラクターがクラスメンバーから削除されたのですか??

于 2013-08-24T06:08:17.553 に答える
1

コンストラクターは連鎖しています。作成する各コンストラクターは、最終的にスーパークラス コンストラクターの 1 つを呼び出す必要があります。例:

public class MyException extends RuntimeException {
    public MyException(String message) {
        super(message);   // invokes RuntimeException(String) constructor
    }
}

super(...)またはコンストラクターのthis(...)呼び出しがある場合は、コンストラクターの最初のステートメントとして指定する必要があります。どちらも指定されていない場合は、super()暗黙的に想定され、スーパークラスのデフォルト コンストラクターまでチェーンされます。(スーパークラスにデフォルトのコンストラクターがない場合、コンパイルは失敗します。)

于 2013-08-24T06:04:42.770 に答える
0

コンストラクターはメンバーではないため、サブクラスに継承されませんが、スーパークラスのコンストラクターはサブクラスから呼び出すことができます。

ソース: http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html

Ctrl+O を使用した Eclipse メソッドのヘルプには、現在のクラスから呼び出すことができるすべてのメソッドが表示されます。したがって、 を使用して呼び出すことができるように、親コンストラクターもその中に表示されますsuper

于 2013-08-24T06:08:37.147 に答える