内部类(成员,静态,匿名,局部)

  1. 在成员内部类也可以被一些权限修饰符修饰
  2. 成员内部类的地位相当于成员变量:定义格式:修饰符  class  类名  {}
  3. jdk16以前成员内部类不能定义静态变量,jdk16以后可以
  4. 获取成员内部类对象的两种方式:
  • 方式1:外部类编写方法,对外提供内部类对象(一般是内部类对象被private修饰)   格式  public  void   方法名(){return   new 内部类对象名()}
  • 方式2 :直接创建,格式:外部类对象名.内部类对象名    对象名   = new  外部类对象名().new 内部类对象名();

ps:外部类成员变量和内部类成员变量重名时,我们用外部类名.this.变量名来在内部类中访问外部类访问,this指代调用者的地址

 

 

静态内部类:

  1. 静态内部类是一种特殊的成员内部类(用static修饰)
  2. 静态方法中只能调用静态变量
  3. 创建静态内部类对象的方式:外部类对象名.内部类对象名    对象名= new 外部类对象名.内部类对象名();
  4. 如何调用静态内部类中的方法:
  • 静态方法:外部类对象名.内部类对象名.方法名();
  • 非静态方法:创建静态内部类对象,在去调用

 

局部内部类:

  1. 将内部类定义在方法里面就叫局部内部类,相当于方法里面的局部变量
  2. 外部无法使用,需要在方法内部创建对象并且使用
  3. 该类可以直接访问外部类成员,也可以访问内部类局部变量
  4. 用static修饰的方法,都可以用类名.方法名();来调用

 

匿名内部类:

  1. 匿名内部类指隐藏了名字的内部类,可以写在成员位置,也可以写在局部位置
  2. 匿名内部类的格式:new 接口名/类名(){方法的重写};
  3. 格式细节:包含了实现或者继承,方法的重写,对象的创建,整体就是一个类的子类对象或者一个接口的实现类对象,可以运用在多态或者接口多态
  4. 使用场景:当方法参数是接口或者类时,以接口为例,可以传递这个接口的实现类对象,如果接口只实现一次,就可以使用匿名内部类简化代码,调用方法时传递匿名内部类或者可以用接口名/类名   对象名=匿名内部类,然后在把对象名传到方法中去

 

posted @ 2023-01-04 10:48  为zq  阅读(62)  评论(0)    收藏  举报