Javaにおける内部クラスの簡単な概念
コンセプト:クラス内で定義されたクラス1.内部クラスは独立した.classファイルを生成します.ファイル名
メンバー内部クラス(クラス比メンバー変数)
1.場所の定義:クラス内、メソッド以外2.オブジェクトの作成方法
3.注意:a.外部クラスへのアクセス属性:
せいてきないぶクラス
1.場所の定義:クラス内、メソッド以外.
3.注意:a.静的内部クラスで外部クラスにアクセスできない非静的属性
ローカル内部クラス(クラス比ローカル変数)
1.場所の定義:メソッドの内部2.オブジェクトの作成方法:メソッドの内部でのみ作成できます.
3.注意:ローカル内部クラスは、そのメソッド内のローカル変数にアクセスし、この変数はJDK 8.0でfinal修飾される必要があります.このローカル変数はデフォルトでfinal修飾されます.
匿名の内部クラス
1.特殊なローカル内部クラス、ローカル内部クラスが持つ特徴匿名内部クラスが2.インタフェースを実現するか、クラスを継承する必要がある
3.注意:匿名の内部クラスは1つのオブジェクトしか作成できない4.メリットとデメリット:コード量のデメリットを減らす:可読性が悪く、メンテナンス性が悪い
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.メリットとデメリット:コード量のデメリットを減らす:可読性が悪く、メンテナンス性が悪い