静态内部类是指在外部类中使用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
。外部类的对象不能直接访问静态内部类的成员变量和成员方法,需要通过创建静态内部类的对象来访问。