匿名内部类的使用场景
匿名内部类
一、核心概念
没有类名的局部内部类,用完即弃,不用单独创建子类,直接临时重写方法/实现接口。
二、4大高频使用场景(考试必背)
- 快速继承普通父类
只需临时重写父类少量方法,不用单独新建子类
new Animal(){
@Override
public void eat(){}
};
- 快速实现接口(最常用)
不用写单独实现类,一步完成接口实例化+方法重写
java
Runnable run = new Runnable() {
@Override
public void run() {}
};
- 事件监听/回调场景
Swing、Android、前端按钮点击监听标配用法
java
btn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {}
});
- 只用一次的临时对象
类仅使用一次、无需复用,省去单独建类的冗余代码
三、语法特点(选择题考点)
- 无类名,定义+创建对象同时完成
- 只能继承一个父类 / 实现一个接口
- 不能定义静态成员
- 可以访问所在方法的final/有效final局部变量
- 天生匿名、不可复用
四、和Lambda区别
- 匿名内部类:适用所有接口/抽象类
- Lambda表达式:只适用函数式接口(仅有一个抽象方法)
