Java面向对象进阶——“恁不累?“(匿名内部类)

一.匿名内部类

1.认识内部类

⑴概念

内部类,顾名思义,就是类中的类,在一个类的里面再定义一个类,Java中定义了四种内部类

⑵四种内部类

①成员内部内,类定义在了成员位置 (类中方法外称为成员位置,无static修饰的内部类)

②静态内部类,类定义在了成员位置 (类中方法外称为成员位置,有static修饰的内部类)

③局部内部类,类定义在方法内

④匿名内部类,没有名字的内部类,可以在方法中,也可以在类中方法外。

⑶访问特点(以成员内部类为例)

①内部类可以直接访问外部类的成员,包括私有

如图:我在Outer内部创建了一个成员内部类Inner,并在Inner中直接调用了外部类的成员

c90839a36715454b8959cd66573e9a3c.png

②外部类要访问内部类的成员必须创建对象

如图:我在Outer中想要访问Inner的成员,就要创建内部类的对象才可以

a0219d55444b421e847511b650b9c17f.png

当然,匿名内部类才是我们学习的重点,匿名内部类是真的没有名字吗?

2.细解匿名内部类

⑴格式细解

匿名内部类是内部类的简化写法,是一个隐含了名字的内部类

格式:

new 类名/接口名(){

     重写方法;

};

其中包含了

①继承或者实现关系

②方法重写

③创建对象

诶,看到这个格式,你是不是觉得很熟悉啊?我们好像哪里见过?

对,在学习数组的工具类Arrays中的sort方法时,我们要想自己规定sort的排列方式时是不是就要填写里面的规则

如图

abf21eb127af442ea8a6e6d3e235287c.png

下面我们就来仔细分解它的格式,让你彻底了解它

首先我们想要调用接口中的方法一共有四步

①定义实现类实现接口

②重写接口中的方法

③创建实现类对象

④调用方法

如图6f3e8be69bcd402f8fd35db52aa03d01.png

下面我来一步一步实现这四步

①先定义好实现类并重写方法

65e34be390054e9d8808794949f2db00.png

②因为是没有名字的类,所以我去掉了{}前面的类名

736ceafe05a84f279a9693fc52bec3c0.png 

 ③接下来我要实现这个没有名字的类的接口,就直接把借口名加到{}前面

ab17a04bf78542339462e0ef0536df3f.png

 ④进行第三步,创建这个实现类(没有名字的类)的对象(创建对象new)

cef81039cffa4758a0e6cd040642ad8b.png

到这一步,你是不是发现我们已经得到了匿名内部类的格式了

⑤最后一步,创建完对象后调用方法

479fd00e0cf343f08fad2eb7cdeb650b.png

 根据图解,我们可以发现

格式的整体其实就是一个类的子类对象或者接口的实现类对象,真正的没有名字的类是{重写方法}这个类

⑵匿名内部类的作用

匿名内部类就是为了简化代码!

当我们要定义一个只需使用一次的子类或接口时,就可以考虑使用匿名内部类来简化代码

 

若有不足,错误之处,望指出更正(˵¯͒〰¯͒˵)

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汤姆大聪明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值