私はEclipse Junoを使用して継承のコンストラクターを学んでいます。
childClass で ctrl+O を 2 回押すと、継承されたメンバーが表示されます。しかし、たまたま継承されたメンバーのスーパークラスのコンストラクターでさえ見られます
しかし、コンストラクタは継承されないと言われています...
誰かがこの動作を説明できますか?
私はEclipse Junoを使用して継承のコンストラクターを学んでいます。
childClass で ctrl+O を 2 回押すと、継承されたメンバーが表示されます。しかし、たまたま継承されたメンバーのスーパークラスのコンストラクターでさえ見られます
しかし、コンストラクタは継承されないと言われています...
誰かがこの動作を説明できますか?
フィールド、メソッド、およびネストされたクラスとは異なり、コンストラクターはクラス メンバーではありません。
サブクラスは、そのスーパークラスからすべてのメンバー (フィールド、メソッド、およびネストされたクラス) を継承します。コンストラクターはメンバーではないため、サブクラスに継承されませんが、スーパークラスのコンストラクターはサブクラスから呼び出すことができます。
コンストラクターは連鎖しています。作成する各コンストラクターは、最終的にスーパークラス コンストラクターの 1 つを呼び出す必要があります。例:
public class MyException extends RuntimeException {
public MyException(String message) {
super(message); // invokes RuntimeException(String) constructor
}
}
super(...)
またはコンストラクターのthis(...)
呼び出しがある場合は、コンストラクターの最初のステートメントとして指定する必要があります。どちらも指定されていない場合は、super()
暗黙的に想定され、スーパークラスのデフォルト コンストラクターまでチェーンされます。(スーパークラスにデフォルトのコンストラクターがない場合、コンパイルは失敗します。)
コンストラクターはメンバーではないため、サブクラスに継承されませんが、スーパークラスのコンストラクターはサブクラスから呼び出すことができます。
ソース: http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html
Ctrl+O を使用した Eclipse メソッドのヘルプには、現在のクラスから呼び出すことができるすべてのメソッドが表示されます。したがって、 を使用して呼び出すことができるように、親コンストラクターもその中に表示されますsuper
。