Javaにおける内部クラスの簡単な概念

3379 ワード

コンセプト:クラス内で定義されたクラス1.内部クラスは独立した.classファイルを生成します.ファイル名Outer$Inner.class 2.内部クラスは外部クラスのプライベート属性にアクセスでき、外部クラスのカプセル化性を破壊しない
メンバー内部クラス(クラス比メンバー変数)
1.場所の定義:クラス内、メソッド以外2.オブジェクトの作成方法
Outer o = new Outer();	//       
Outer.Inner inner = o.new Inner();	//         

3.注意:a.外部クラスへのアクセス属性: .this. 例:Outer.this.a; b.メンバー内部クラスでは静的メンバーを定義できない(属性と方法)
せいてきないぶクラス
1.場所の定義:クラス内、メソッド以外.staticで修飾2.オブジェクトの作成方法:
Outer.Inner inner = new Outer.Inner();	//         

3.注意:a.静的内部クラスで外部クラスにアクセスできない非静的属性
ローカル内部クラス(クラス比ローカル変数)
1.場所の定義:メソッドの内部2.オブジェクトの作成方法:メソッドの内部でのみ作成できます.
class Outer{
	public void m1() {
		class Inner02{	//     
		
        }
		Inner02 inner = new Inner02(); //   m1             
	}	
}

3.注意:ローカル内部クラスは、そのメソッド内のローカル変数にアクセスし、この変数はJDK 8.0でfinal修飾される必要があります.このローカル変数はデフォルトでfinal修飾されます.
匿名の内部クラス
1.特殊なローカル内部クラス、ローカル内部クラスが持つ特徴匿名内部クラスが2.インタフェースを実現するか、クラスを継承する必要がある
   /        = new    /   (){
    //        
}			//                        

3.注意:匿名の内部クラスは1つのオブジェクトしか作成できない4.メリットとデメリット:コード量のデメリットを減らす:可読性が悪く、メンテナンス性が悪い