静态内部类和非静态内部类的区别
程序员文章站
2022-07-14 12:04:26
...
如果一个类中定义了静态成员变量和静态方法,那么静态方法可以访问静态成员变量,而无法访问非静态成员变量,并且静态成员变量和静态方法是随着类的加载而加载、非静态成员变量和方法的声明周期是由对象的声明周期控制的。
静态内部类和非静态内部类同静态方法和非静态方法类似。
为什么要使用内部类
内部类的定义必然是与这个类是有联系的,并且往往只有该类调用此内部类,因此可以将内部类看成该类的扩展。
静态内部类和非静态内部类的区别
主要区别有三点:定义、访问和声明
-
定义
- 静态内部类中可以定义静态成员变量和静态方法;非静态内部类不能定义静态属性和方法
-
访问
- 静态内部类只能访问外部类的静态成员变量和静态方法;非静态内部类可以访问外部类的所有成员和方法
-
声明
- 声明静态内部类时,不依赖于外部类对象;声明非静态内部类时,依赖于外部类对象
# 静态内部类
OutClass.InnerClass innerClass = new OutClass.InnerClass();
# 非静态内部类
OutClass.InnerClass innerClass = new OutClass().new InnerClass();