第三节 静态内部类
顾名思义,就是用
static
修饰的内部类,但并不是说明内部类是静态的,而是说明内部类不依托于外部类实例
定义语法
class < 外部类名 > {
// 外部类字段方法
static class < 内部类名 > {
// 内部类字段方法
}
// 外部类字段方法
}
静态内部类是外部类的一个静态属性成员,因此静态内部类只能访问外部类的静态属性和方法
创建静态内部类实例
< 外部类名 >.< 内部类名 > 引用变量 = new < 外部类名 >.< 内部类名 >;
public class CreateStaticInnerClass {
public static void main(String[] args) {
new Outter.Inner(); // 在外部类之外创建静态内部类实例
new Outter().createStaticInnerInstance(); // 在外部类中创建静态内部类实例
}
}
class Outter{
// 定义静态内部类
static class Inner{
public Inner() {
System.out.println("Inner 实例创建成功!");
}
}
public void createStaticInnerInstance(){
// 创建方式同非静态内部类的创建
Inner i = new Inner();
}
}
/*
* 运行结果
* Inner 实例创建成功!
* Inner 实例创建成功!
*/
写在最后
静态内部类也被称作为静态嵌套类或顶级嵌套类,与非静态内部类有所不同,非静态内部类与外部类是共享关系,是外部类对象的组成部分。
而静态内部类与外部类对象没有这样的关系,而是脱离的外部类对象且存在于另一类中的普通类,所以
static
修饰不是说类是静态的,而是说明其创建对象是不依托于外部类对象的,这点也可以从静态内部类的实例创建语法看出。