内部クラスの意味:
クラスの定義は、Java内の別のクラス内に配置されることを可能にし、前者は、外部型と呼ばれる内部クラスと呼ばれています。
インナークラスは、一般的にそのクラスまたはステートメントのブロックの定義で使用され、外部からそれを参照するために完全な名前を指定する必要があります。
内部クラス名は、それを含む外側のクラスのクラス名と同じにすることはできません。
内部クラスのオブジェクトを作成するには:
外部変数名内の外部名クラスのクラス名=新しいクラス名().new内部クラス名();
静的な内部クラスのオブジェクトを作成します。
。外部変数名の内部、外部クラス名クラス名=新しいクラス名クラス名()内;
内部クラスのメンバー:
(内部クラス静的の内部静的メンバーおよび非メンバー)
クラスメンバーの使用法として、内部クラスのメンバー:
1.異なるクラスと外部、内部クラスは、プライベート宣言または保護されていてもよいです。
2.あなたは、外部クラスの構造を呼び出すことができます。
3.Innerクラスは、staticとして宣言することはできないが、今回は、もはや外部クラスを使用します
非静的メンバ変数。
クラスの使用法として内部クラスのメンバー:
1.内部構造は、プロパティ、メソッド、構造などを定義することができます。
2.抽象クラスとして宣言することができますので、あなたは他の内部クラスによって継承することができます。
3.最終的に宣言することができます。
4.コンパイル後OuterClass $ InnerClass.classバイトコードファイルを生成します。
注意事項:
クラスメンバーの内部1.非静的メンバは、静的に宣言することはできません。
2.外部クラスのメンバーのみまたは静的メンバの前に文の静的内部クラス。
クラス内の外側のクラスのアクセスメンバーの3メンバーは、我々はする必要があり、「内部クラス。メンバー」または「内部クラスのオブジェクト。メンバー」アプローチ。
前記内側部材は、プライベートデータを含む外側のクラスのクラスのすべてのメンバーに直接使用することができます。
内部クラスを使用するときは、外部クラスの静的メンバ部分をしたいとき5.内部クラスはstaticとして宣言考えます。
ローカル内部クラスの使用法:
1.それだけステートメントまたはコードブロックの方法、および使用後の最初の文で使用することができます。
クラス以外の任意の場所を使用することはできません。
2.しかし、それは戻り値によってオブジェクトは、外部の使用を返されることがあり、
戻り値型は、部分的にしか内部スーパークラスまたはインタフェースタイプの親になることができます。
これは、部分的な内部クラスが備わっています:
1.内部クラスは、コンパイル後の内部クラスが別々の.classファイルにコンパイルされますが、まだ別のクラスであります
しかし、クラス名とクラス外で$記号だけでなく、数字が先行。
2.それだけステートメントまたはコードブロックの方法、および使用後の最初の文で使用することができます。
クラス以外の任意の場所を使用することはできません。
3.ローカル内部クラスは、民間を含め、クラスの外部メンバーを使用することができます。
4.ローカル内部クラスはメソッドの外部ローカル変数を使用することができますが、最終的にする必要があります。
これは、ローカル内部クラス期間の声明と異なるローカル変数によるものです。
5.同様のローカル変数と部分的内部クラスのステータス、公共、保護された、デフォルトを使用することはできません、プライベート
6.ローカル内部クラスは、静的な変更を使用することはできませんので、静的メンバを含めることはできません
匿名内部クラスの特徴:
1.匿名内部クラスは親クラスを継承するか、インタフェースを実装する必要があります
2.匿名内部クラスは1つのオブジェクトのみを持つことができます
3.匿名の内部クラスは、多形の参照を許可されています
匿名内部クラス注:
1.匿名内部クラスは匿名内部クラスのインスタンスを作成することができ、任意の静的メンバ、メソッドやクラスを定義することはできません。
2.アン匿名内部クラスは、暗黙的にクラスを実装するためのインタフェースを使用して、または実装された、新しい背後に配置する必要があります。
1 パブリック クラスSyntaxDemo { 2 公共 静的 ボイドメイン(文字列[]引数){ 3回の。 // クラスの内部メンバーにテストクラス外部アクセス 4。 OuterClassはOuterClass =た新しい新しいOuterClassは(あった) 。5 outerClass.testInnerAccess(); 6 OuterClass.StaticInner staticInner = 新しい新OuterClass.StaticInner(); 7 } 8 } 9つの。 10 クラスOuterClass {た 11。 プライベート intはI; 12は プライベート 静的 ダブルKは、 13であります 公共 ボイドtestInnerAccess(){ 14 // アン内部クラスの作成 15 InnerClass InnerClass = 新しい新しいInnerClass()と、 16 のSystem.out.println(innerClass.j); 17 } 18である 。19 公共 静的 ボイド(testAccessFromStaicInner){ 20が INT、M = 100 ; 21である のSystem.out.println(「testAccessFromStaicInner」); 22である } 23れる // 入札インナークラスにプライベート権限改質内側部材クラスプラス位置によってのみ、外部クラスによってアクセスすることができる 24 25 プライベート クラスInnerClass { 26のIS int型= 100 J ; 27 // テストする方法を定義する 28 公共 ボイドtestOuterPrivate(){ 29 のSystem.out.println(I)を、 30 } 31である } 32 33である // で修飾静的許可修飾子 34である 静的 クラスStaticInner { 35の // メンバ変数と静的メソッドは非静的コンテキストにアクセスすることができない 36 // プライベートINT Jが= I; 37 38である 公共 ボイド(testAccess){ 39 // 静的コンテキストが非静的メンバ変数とメソッドのメンバーにアクセスすることができない 40 41であります / / クラスの外静的メンバーアクセス 42 System.out.println(K) 43は、 44である // アクセス外側のクラスの静的メソッド 45 testAccessFromStaicInner(); 46である } 47 } 48 }