どのような内部クラス?
他のクラスやメソッドのクラス定義:これは内部クラスとして定義され、資料の冒頭から見られています。内部クラスのメンバー、ローカル内部クラス、匿名内部クラスと静的内部クラス:異なる使用シナリオによると、内部クラスは4つのカテゴリに分けることができます。それぞれの特徴や注意事項は、それらを聞かせて、異なっています。
内部クラスのメンバー
名前が示唆するように、クラスの内部メンバーは、クラス、クラスのメンバとして、クラス内で定義されています。次のように:
パブリック クラス外側{ パブリック クラスインナー{ } }
次のような機能は次のとおりです。
- クラスのメンバーは、内部権限修飾子(EG。かもしれ
public,private等
)修正します - 内部クラスのメンバーは(を含む、外部クラスのすべてのメンバーにアクセスすることができる
private
の部材) - 内部クラスのメンバーは、デフォルトクラスは、外部オブジェクト参照へのポインタを含んでいます
- 使用として
this
同じ、メンバー名やメソッド名がカバレッジを発生したとき、あなたは外部クラスの名前を使用し、プラス.thisクラスメンバー外のアクセスを指定することができます。以下のような:Outer.this.name
- 内部クラスのメンバーは定義できない
static
のメンバーを - 内部クラスのメンバーは、構文を作成しました:
外側の外= 新しい外()。 内側Outer.Inner外=。新しいインナー();
部分的な内部クラス
内部ローカルクラスまたはメソッド・スコープで定義されたクラスは、それと内側部材のクラス間の差のみアクセスを異なります。
パブリック クラス外側{ 公共 ボイド試験(){ クラスインナー{ } } }
次のような機能は次のとおりです。
- ローカル内部クラスは、アクセス修飾子を持つことができません
- 部分的な内部クラスは次のように定義することはできません
static
- 部分的な内部クラスが定義できない
static
メンバーを - 部分的な内部のデフォルトのクラスは、外部クラスのオブジェクトへの参照を含み、
- また、ローカル内部クラスを使用することができます
Outer.this
クラスメンバーの外部の開発にアクセスするための構文を -
クラスまたはドメインメソッド内のローカル変数を使用したい、変数でなければなりません
final
JDK1.8の後、何の
final
変更は、effectively final
することはできません。それは何を意味するのでしょうか?それはされていないfinal
変更されていますが、追加した場合final
、コンパイラは文句を言うことはできません。
匿名内部クラス
名前のない匿名内部クラスは、クラス内で一緒にし、継承マージされていません
パブリック クラス外{ 公共の一覧<文字列>リスト= 新しいのArrayList <文字列> (){ { 追加( "テスト" ); } }。 }
これは通常、最も一般的な構文です。
次のように匿名内部クラスである特徴:
- ブロックの匿名の内部クラスは、個別の初期化ブロックを表します
{}
- 匿名内部クラス、メソッドまたは可変ドメインを使用する場合は、変数をしなければならない
final
JDK1.8た後、修正effectively final
することができます - デフォルトの外部オブジェクト参照により含ま匿名内部クラス
- 匿名内部クラスの継承を表し依存クラスを
静的な内部クラス
静的内部クラスstatic
修飾された内部部材クラス
パブリック クラス外側{ パブリック 静的 クラスインナー{ } }
次のような機能は次のとおりです。
- 静的内部クラスは、4種類の外部オブジェクトへの参照が含まれていない内部クラスであります
- 静的な内部クラスを定義
static
メンバーを -
ネストされたクラスは、外部クラスの静的データメンバとメソッドにアクセスすることができます。