Java 内部クラスの継承: エクスポートされたクラスがインスタンス化されるとき、エクスポートされたクラスのインスタンスが接続するための周辺クラス オブジェクトが存在しないためです。 したがって、外部クラスを作成し、特定の構文を使用して内部クラスと外部クラスの間の関係を示す必要があります。
Java 内部クラスの継承:
Java 内部クラスのコンストラクターは、へのポインターに接続する必要があります。それを囲んでいるクラスのオブジェクト参照 (内部クラスを構築するには、外部クラスのオブジェクトへの参照を与える必要があり、内部クラスは外部クラスのオブジェクトに依存します)。そのため、内部クラスを継承するときは、手動で呼び出しを追加する必要があります。派生クラスのコンストラクター内の基本クラスのコンストラクターに。
これは、エクスポートされたクラスがインスタンス化されるときに、エクスポートされたクラスのインスタンスが接続するための周辺クラス オブジェクトが存在しないためです。
したがって、外部クラスを作成し、特定の構文を使用して内部クラスと外部クラスの間の関係を示す必要があります。
次の例では、派生クラス InheritInner に内部クラスの外部クラスからの参照を与える必要があります。通常の継承の場合、エクスポートされたクラス コンストラクターに super();
を追加するだけで済みますが、内部クラスは外部クラス オブジェクト .super()
;
class WithInner{ class Inner{} } public class InheritInner extends WithInner.Inner{ InheritInner(WithInner wi){ wi.super(); //wi的父类是object } public static void main(String[] args){ WithInner wi = new WithInner(); InheritInner ii = new InheritInner(wi); } }
さらに、継承された内部クラスにデフォルト以外のコンストラクターしかない場合はどうすればよいでしょうか?
class WithInner{ class Inner{ public Inner(int i){ System.out.println(i); } } } public class InheritInner extends WithInner.Inner{ InheritInner(WithInner wi){ int i=0; wi.super(i);//如代码所示,当被继承的构造器需要参数时,应把参数传递给这个super函数 } public static void main(String[] args){ WithInner wi = new WithInner(); InheritInner ii = new InheritInner(wi); } }
関連する学習の推奨事項: Java 基本チュートリアル
以上がJavaの内部クラスの継承とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。