内部类

Java实例内部类

(1)在外部类的静态方法和外部类以外的其他类中,必须通过外部类的实例创建内部类的实例。

public class External {
    class Inner {
    }
    Inner inner = new Inner();
    public void func1() {
        Inner inner = new Inner();
    }

    public static void main(String[] args) {
        Inner inner = new External().new Inner();
    }

    class Inner2 {
        Inner inner = new Inner();
    }
}
class Other {
    External.Inner inner = new External().new Inner();
}

(2)在实例内部类中,可以访问外部类的所有成员。
(3)在实例内部类中不能定义 static 成员,除非同时使用 final 和 static 修饰。

静态内部类

(1)在创建静态内部类的实例时,不需要创建外部类的实例。
(2)静态内部类中可以定义静态成员和实例成员。外部类以外的其他类需要通过完整的类名访问静态内部类中的静态成员,如果要访问静态内部类中的实例成员,则需要通过静态内部类的实例。
(3) 静态内部类可以直接访问外部类的静态成员,如果要访问外部类的实例成员,则需要通过外部类的实例去访问。

public class External {
    static class Inner {
    }
    Inner inner = new Inner();
    public void func1() {
        Inner inner = new Inner();
    }

    public static void main(String[] args) {
        Inner inner = new Inner();
    }

    class Inner2 {
        Inner inner = new Inner();
    }
}
class Other {
    External.Inner inner = new External.Inner();
}
posted @ 2023-05-16 10:02  xiaoovo  阅读(24)  评论(0)    收藏  举报