静态内部类是指在外部类中使用static关键字修饰的内部类。使用静态内部类的语法格式为:
public class OuterClass { // 外部类成员变量和方法 public static class InnerClass { // 静态内部类成员变量和方法 } }
静态内部类使用的注意事项:
- 静态内部类可以直接访问外部类的静态变量和静态方法,但不能直接访问外部类的非静态变量和非静态方法。
- 静态内部类可以被外部类直接访问,不需要创建外部类的对象。
- 静态内部类可以有自己的静态变量和静态方法,与外部类的静态变量和静态方法不冲突。
- 外部类的对象不能直接访问静态内部类的成员变量和成员方法,需要通过创建静态内部类的对象来访问。
示例代码如下:
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
。外部类的对象不能直接访问静态内部类的成员变量和成员方法,需要通过创建静态内部类的对象来访问。