高级特性(静态内部类及应用)

三、静态内部类及应用

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); 静态内部类不能访问外部类的非静态成员
        }
    }
}

你可能感兴趣的:(高级特性(静态内部类及应用))