Java 静态内部类
·
一、定义
静态内部类是使用 static 关键字修饰的内部类,它属于外部类本身,可以在不依赖外部类实例的情况下被创建和使用。
public class Outer {
static class Inner {
// 静态内部类的定义
}
}
二、创建语法
静态内部类的对象创建方式与外部类实例无关,不需要外部类对象即可创建。
Outer.Inner inner = new Outer.Inner();
对比:
非静态内部类: Outer.Inner inner = outer.new Inner();
静态内部类: Outer.Inner inner = new Outer.Inner();
三、静态内部类的性质
-
静态内部类只能直接访问外部类的静态成员(变量或方法)。
-
若要访问外部类的非静态成员,必须通过外部类实例。
-
静态内部类可以包含:
- 静态成员(字段、方法)
- 非静态成员(字段、方法)
-
静态内部类的静态方法遵守普通静态方法的一切规则:
- 只能访问静态成员;
- 无法直接使用
this关键字; - 可以通过类名直接调用;
- 不能访问外部类的非静态内容。
-
静态内部类编译后生成的 .class 文件名形如:
Outer$Inner.class
示例:
public class Outer {
private static String staticName = "外部类静态变量";
private String instanceName = "外部类实例变量";
// 静态内部类
static class Inner {
// 非静态方法
public void showInfo() {
System.out.println("访问外部类静态成员:" + staticName);
// 错误写法,不能直接访问非静态成员
// System.out.println(instanceName);
// 若要访问外部类的非静态成员必须通过外部类实例:
Outer outer = new Outer();
System.out.println("通过外部类对象访问实例成员:" + outer.instanceName);
}
// 静态方法
public static void showStatic() {
System.out.println("静态方法访问外部类静态成员:" + staticName);
// 错误写法,不允许访问非静态成员
// System.out.println(instanceName);
}
}
// 外部类的main方法用于测试
public static void main(String[] args) {
// 创建静态内部类对象(无需外部类实例)
Outer.Inner inner = new Outer.Inner();
inner.showInfo();
// 调用静态内部类的静态方法
Outer.Inner.showStatic();
}
}
运行结果:
访问外部类静态成员:外部类静态变量
通过外部类对象访问实例成员:外部类实例变量
静态方法访问外部类静态成员:外部类静态变量
更多推荐



所有评论(0)