静态内部类、成员内部类、局部内部类、非公有类、匿名内部类
一般静态内部类(为了单例)和匿名内部类使用较多
静态内部类和成员内部类
- 区别在于static,都可以访问外部类和被外部类访问private成员。
- 成员内部类不能有静态变量、静态方法和静态类等(可以有final static常量),因为会造成内外部初始化问题。
- 在访问外部类成员时,静态内部类用
Phone phone=...;phone.属性/方法;//Phone外部类
成员内部类用Phone.this.属性/方法;
内部类被其他类使用时,静态内部类用Phone.CPU phone=new Phone.CPU();//CPU是Phone的静态内部类
成员内部类用Phone phone=new Phone();Phone.CPU phone=phone.new CPU();
非公有类
- 就是和public class同一java文件里之外的其他类,访问修饰符被缺省,一般不加。如果一个类中只有非公有类,那么类名可以与文件名不同。
局部内部类
- 和成员内部类类似。
- 一样不能有静态的,但是可以访问方法的局部变量和参数,但是这两个都是默认为final(省略)。
- 不能有访问修饰符(和局部变量一致)。
匿名内部类
- 用来创建抽象类和接口的实例。
new 接口/抽象类(){方法实现};//抽象有构造参数,可以传参
- 匿名内部类可以作为方法的参数。
- 匿名内部类也有静态非静态局部等区别,和他们类似的语法规定。
内部类相关
原文:https://www.cnblogs.com/ofaction/p/13134188.html