インナークラスは内部クラスとも呼ばれ、クラスの中に定義したクラスのことです。
インナークラスには大きく分けて
非staticインナークラスとstaticインナークラスの2つがあります。
非staticインナークラス
非staticインナークラス(Non-static InnerClass)は、外部クラス(インナークラスが属しているクラス)のインスタンスに依存するクラスです。
以下例のようにインナークラスは外部クラスのフィールドやメソッドに直接アクセスできます。
- (非staticインナークラスの例)
-
public class OuterClass { private String name; class InnerClass { void display() { System.out.println("OuterClassの値:" + name); } } }
上記非staticインナークラスをnewするには以下のように記述します。
- (非staticインナークラスをnewする例)
-
OuterClass.InnerClass cls = new OuterClass().new InnerClass();
staticインナークラス
staticインナークラス(Static Inner Class)は、外部クラスのインスタンスに依存せずに外部クラスのstaticメンバにのみアクセスできるクラスです。
staticインナークラスは、外部クラスのインスタンスを作成せずに直接インスタンス化できます。
- (staticインナークラスの例)
-
public class OuterClass { private static String name; private String address; static class StaticInnerClass { void display() { System.out.println("OuterClassのname値:" + name); System.out.println("OuterClassのaddress値:" + address); //addressはstatic値でないためこれはエラー } } }
上記staticインナークラスをnewするには以下のように記述します。
- (staticインナークラスをnewする例)
-
OuterClass.InnerClass cls = new OuterClass.InnerClass();
コメント