文章首发于:clawhub.club


重要:非静态内部类持有外部类的引用。

  • 是否拥有静态成员(属性,方法):

非静态内部类不可以有静态成员,静态内部类可以。

  • 访问外部类的成员区别

静态内部类只能直接访问外部类的静态成员,而非静态内部类可以访问外部类的所有成员。

  • 类的声明区别

静态内部类的声明不依赖外部类,而非静态内部类需要先有外部类,之后才能new。

1
2
3
4
5
# 静态内部类
OutClass.InnerClass innerClass = new OutClass.InnerClass();

# 非静态内部类
OutClass.InnerClass innerClass = new OutClass().new InnerClass();