インナークラス
javaではクラスにネスト(内部に定義)したクラスを定義する事が可能です。
クラスの中にクラスを作る事ができると言う事ですね。
そのインナークラスの中にも4種類あり、
・メンバークラス
・staticインナークラス
・ローカルクラス
・匿名クラス
があります。
メンバークラス
クラス内部にフィールド変数やメソッドなどと同じように定義したインナークラスの中で、非staticとして定義したクラスのこと。メンバークラスでは外部クラスのフィールド変数にアクセスする事ができる。
メンバークラスを使用するには外部クラスをインスタンスかしておかなければいけない。
staticインナークラス
内部で宣言したstaticインナークラスからはエンクロージングクラス(外部クラス)の非staticメンバーにアクセスする事ができない。
ローカルクラス
メソッド内に定義するインナークラスのことを「ローカルクラス」と呼ぶ。
ローカルクラスでは、外部クラスのフィールド変数にアクセスする事ができる。メソッドないい定義された変数はfinalが付与されたもの以外アクセス出来なかったがjava1.8以降はfinalが付与されていなくてもアクセス出来るようになった。
匿名クラス
クラスの名前を付けずに、宣言と実行を同時に行う一回限りのクラスを「匿名クラス」と言う。コンストラクタが不要なシンプルで一度しか利用しないような処理で記述する。