2023年5月24日星期三

内部类

定义:写在一个类里面的类就是内部类
使用场景:

  • B类表示A类的事物是A类的一部分,且B单独存在没有意义
  • 内部类表示的事物是外部类的一部分
  • 内部类单独出现没有任何意义
    访问特点:
  • 内部类可以直接访问外部类的成员,包括私有
  • 外部类要访问内部类的成员,必须创建对象

成员内部类

什么是成员内部类?

  • 写在成员位置的,属于外部类的成员

成员内部类的格式?

  • 成员内部类写在成员位置,属于外部类的成员
  • 成员内部类可以被一些修饰符所修饰,比如private、缺省、protected、public、static等
  • JDK16之后,成员内部类里面可以定义静态变量

如何创建成员内类的对象?

  • 在外部类中编写方法,对外提供外部类的对象
    • 用private修饰内部类时一般用此方法
  • 直接创建格式:Outer.Inner oi = new Outer().new Inner();

成员内部类如何获取外部类的成员变量?
outer.this.变量名

静态内部类

什么是静态内部类?

  • 用static修饰的成员内部类的一种

如何创建静态内部类对象?
Outer.Inner oi = new Outer.Inner();

静态内部类方法的调用?

  • 非静态方法:先创建对象,用对象调用
  • 静态方法:Outer.Inner.method();

局部内部类

  • 将内部类定义在方法里面就叫做局部内部类,类似于方法里面的局部变量
  • 外界是无法直接使用,需要在方法内部创建对象并调用
  • 该类可以直接访问外部类的成员,也可以访问方法内的局部变量

匿名内部类

什么是匿名内部类?

  • 隐藏了名字的内部类(外部类名$序号),可以写在成员位置,也可以写在局部位置

匿名内部类的格式?

new 类名或者接口名() {
	@Override	
	重写方法;
};

格式的细节?

  • 包含了继承或实现,方法重写,创建对象
  • 整体就是一个类的子类对象或者接口的实现类对象对象

使用场景?

  • 当方法的参数是接口或者类时
    • 以接口为例,可以传递这个接口的实现类对象
    • 如果实现类只要使用一次,就可以用匿名内部类简化代码

没有评论:

发表评论

为你写诗

 竹意 赋竹几时诗意浓,风雪知我意朦胧 寒风凛冽吹竹叶,大雪纷飞映竹容 月下竹影摇清梦,雪中竹枝舞星穹 书篇小竹诉音避,愿留诗意在竹中 一潦西流水 甲辰 霜月 望 于沪