一.匿名内部类
1.认识内部类
⑴概念
内部类,顾名思义,就是类中的类,在一个类的里面再定义一个类,Java中定义了四种内部类
⑵四种内部类
①成员内部内,类定义在了成员位置 (类中方法外称为成员位置,无static修饰的内部类)
②静态内部类,类定义在了成员位置 (类中方法外称为成员位置,有static修饰的内部类)
③局部内部类,类定义在方法内
④匿名内部类,没有名字的内部类,可以在方法中,也可以在类中方法外。
⑶访问特点(以成员内部类为例)
①内部类可以直接访问外部类的成员,包括私有
如图:我在Outer内部创建了一个成员内部类Inner,并在Inner中直接调用了外部类的成员
②外部类要访问内部类的成员必须创建对象
如图:我在Outer中想要访问Inner的成员,就要创建内部类的对象才可以
当然,匿名内部类才是我们学习的重点,匿名内部类是真的没有名字吗?
2.细解匿名内部类
⑴格式细解
匿名内部类是内部类的简化写法,是一个隐含了名字的内部类
格式:
new 类名/接口名(){
重写方法;
};
其中包含了
①继承或者实现关系
②方法重写
③创建对象
诶,看到这个格式,你是不是觉得很熟悉啊?我们好像哪里见过?
对,在学习数组的工具类Arrays中的sort方法时,我们要想自己规定sort的排列方式时是不是就要填写里面的规则
如图
下面我们就来仔细分解它的格式,让你彻底了解它
首先我们想要调用接口中的方法一共有四步
①定义实现类实现接口
②重写接口中的方法
③创建实现类对象
④调用方法
如图
下面我来一步一步实现这四步
①先定义好实现类并重写方法
②因为是没有名字的类,所以我去掉了{}前面的类名
③接下来我要实现这个没有名字的类的接口,就直接把借口名加到{}前面
④进行第三步,创建这个实现类(没有名字的类)的对象(创建对象new)
到这一步,你是不是发现我们已经得到了匿名内部类的格式了
⑤最后一步,创建完对象后调用方法
根据图解,我们可以发现
格式的整体其实就是一个类的子类对象或者接口的实现类对象,真正的没有名字的类是{重写方法}这个类
⑵匿名内部类的作用
匿名内部类就是为了简化代码!
当我们要定义一个只需使用一次的子类或接口时,就可以考虑使用匿名内部类来简化代码
若有不足,错误之处,望指出更正(˵¯͒〰¯͒˵)