Java の静的内部クラスの使用方法
外部クラス内でstaticキーワードで修飾された内部クラスのこと。次のようにして静的内部クラスを作成します。
public class OuterClass {
// 外部类成员变量和方法
public static class InnerClass {
// 静态内部类成员变量和方法
}
}
静的内部クラスを使用する際の注意点:
- 静的内部クラスは外部クラスの静的変数と静的メソッドに直接アクセスできますが、外部クラスの静的でない変数と静的でないメソッドには直接アクセスできません。
- static内部クラスは外部クラスから直接アクセス可能で、外部クラスのオブジェクトを作成する必要はありません。
- 静的内部クラスは、それぞれの静的変数および静的方法を持つことができ、外部クラスの静的変数および静的方法と競合はしません。
- 外部クラスのオブジェクトから静的内部クラスのメンバ変数やメンバメソッドには直接アクセスできず、静的内部クラスのオブジェクトを生成してからアクセスする必要があります。
次のとおりサンプルコードを示します。
public class OuterClass {
private static int outerStaticVar = 1;
private int outerVar = 2;
public void outerMethod() {
System.out.println("OuterClass outerMethod");
}
public static class InnerClass {
private static int innerStaticVar = 3;
private int innerVar = 4;
public void innerMethod() {
System.out.println("InnerClass innerMethod");
}
public static void innerStaticMethod() {
System.out.println("InnerClass innerStaticMethod");
}
}
public static void main(String[] args) {
// 直接访问静态内部类的静态变量和静态方法
System.out.println(InnerClass.innerStaticVar);
InnerClass.innerStaticMethod();
// 创建静态内部类的对象,并访问其成员变量和成员方法
InnerClass innerObj = new InnerClass();
System.out.println(innerObj.innerVar);
innerObj.innerMethod();
// 外部类的对象不能直接访问静态内部类的成员变量和成员方法
// System.out.println(innerVar); // 编译错误
// innerMethod(); // 编译错误
}
}
静的内部クラスのInnerClassは、外部クラスの静的変数であるouterStaticVarと静的方法であるouterMethodに直接アクセスでき、独自の静的変数であるinnerStaticVarと静的方法であるinnerStaticMethodを持つことができます。ただし、外部クラスのオブジェクトは静的内部クラスのメンバ変数とメンバメソッドに直接アクセスすることはできず、静的内部クラスのオブジェクトを作成してアクセスする必要があります。