内部类相关

静态内部类、成员内部类、局部内部类、非公有类、匿名内部类


一般静态内部类(为了单例)和匿名内部类使用较多

静态内部类和成员内部类

  • 区别在于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 接口/抽象类(){方法实现};//抽象有构造参数,可以传参
  • 匿名内部类可以作为方法的参数。
  • 匿名内部类也有静态非静态局部等区别,和他们类似的语法规定。
posted @ 2020-06-15 18:59  好耶。  阅读(104)  评论(0)    收藏  举报