三、静态内部类及应用
1.静态内部类的特点
(1)使用static修饰的成员内部类叫静态内部类
(2)静态内部类跟外部类没有任何关系,只是在生成类名和类定义时有影响。静态内部类可以看做是与外部类平级的类,使用方式与外部类平级的类完全相同。
(3)创建静态内部类的实例
使用 外部类名.内部类名 实例名 = new 外部类名.内部类构造方法;
2.静态内部类有以下限制
(1)静态内部类不能与外部类重名
(2)静态内部类不能访问外部类的非静态的属性和方法,外部类也不能访问内部类的非静态的属性和方法。
3.实例
public class StaticInnerClass {
public static void main(String[] args) {
// Inner inner = new OuterClass.Inner(); 这样写也是可以的
OuterClass.Inner inner = new OuterClass.Inner();
inner.innerShow();
OuterClass outerClass = new OuterClass();
outerClass.outShow();
}
}
class OuterClass {
private String name = "张三";
private int num1 = 10;
private static int num3 = 30;
public void outShow() {
System.out.println(name);
System.out.println(num1);
Inner inner = new Inner();
System.out.println(inner.name);
System.out.println(inner.num2);
}
public static class Inner {
private String name = "李四";
private int num2 = 20;
private static int num3 = 10;
public void innerShow() {
System.out.println(OuterClass.num3);
System.out.println(num2);
// System.out.println(OuterClass.this.name); 静态内部类不能访问外部类的非静态成员
}
}
}