Javaでは、前者は外部のクラスと呼ばれる内部型と呼ばれ、クラスの定義は、別のクラスの内側に位置することができます。
1.内部クラス分類
インナークラス(静的および非静的)とローカル内部クラス(メソッド、コードブロック、コンストラクタ)のメンバー
2.内部クラスのメンバーを理解します
一方、外側のクラスのメンバーとして。
>外部のクラス構造を呼び出し
、静的変形することができ>
四つの異なるアクセス許可に変更されてもよいです>
一方、クラスのように:
>クラスは、プロパティ、メソッド、および他のコンストラクタを定義して
、最終的な修正が継承されないような缶を発現させることができます>。暗に、最終的には使用しないでください、それは継承することができます
>抽象が変更されてもよいです
特長:
- 外部クラスへの無条件のアクセス内のすべてのメンバープロパティとメソッドクラスのメンバーは、民間および静的な影響ではありません
- 場合クラスクラス内外同じ名前のプロパティまたはメソッドのメンバーは、隠された現象が発生します。クラス内で直接呼び出して、クラス内のメンバのプロパティとメソッドです。ニード「外部クラス」.this。メンバー変数/メソッドのメンバー
- あなたは外部クラス内部クラスにアクセスする必要がある場合は、内部クラスのオブジェクトにアクセスするには、内部オブジェクトを生成する必要があります。
- 内部クラスのメンバーは、クラスの内部のメンバーにアクセスする必要がある場合、その後、あなたは外部のクラスを作成する必要があり、外側のクラスの存在に取り付けられています。
-
クラスは、プライベート、パブリック、プロテクト修飾子を使用して変更することができるので、外部クラスのメンバーは、内部へのアクセスの問題を表現する権限を変更しないことを内部クラスの存在のメンバーとして。内部および外部の缶ではありません。
パブリック クラスのテスト{ 公共 静的 ボイドメイン(文字列[]引数){ //はクラスオブジェクト内の静的メンバを作成 Person.Inner2 Inner2 = 新しい新しいPerson.Inner2(); // オブジェクトクラス内非静的メンバーを作成 者P = 新しい新規人物(); Person.Inner1 inner1 = P。新しい新しいInner1(); inner1.show(); // 名前=張、年齢= 23である inner2.show(); // 静的メンバインナクラス } } クラス人{ 文字列名; int型の年齢; // 非静的メンバインナクラスの クラス{Inner1 公共 ボイドショー(){ 名前 = "サリー" ; 年齢 = 23である; のSystem.out.println( "NAME =" +名+ "年齢=" + 年齢); } } // 静的メンバインナクラスの 静的 クラスInner2 { 公共 ボイドショー(){ System.out.printlnは( "静的メンバインナクラス" ); } } 公共 ボイドは(EAT){ するSystem.out.println( "食べます" ); } }
3.どのようにクラス内でクラスメンバーの外部構造を呼び出すには?
クラス人{ 文字列名 =「ボブ」; 公共 ボイドは(EAT){ } // 非静的メンバインナクラス クラス鳥{ 文字列名 =「ツツジ」; 公共 ボイド表示(文字列名){ System.out.printlnは(名前) ; // 成形プロセスパラメータ のSystem.out.println(この .nameの); // 属性内部クラス のSystem.out.println(人。この .nameの); // 属性外部クラス // Person.this.eat (); } } }
4.ローカル内部クラス
特長:
- あなたは、アクセス修飾子のキーワードを使用することはできません
- 唯一の宣言内のローカルアクション間隔
匿名内部クラス
特長:
- 匿名内部クラスは、静的な修飾子と権利を使用することはできません
- 匿名なし内部コンストラクタ。XXXへの新しいオブジェクト参照を生成することにより。
- ローカル内部クラスに属する匿名内部クラス、地域の状況内部も同様に制限されたインテリアのすべてが有効な匿名のまま
著者:Javaの美しさ
日付:2020年3月30日