匿名内部类
什么是匿名内部类
一种特殊的局部内部类;
所谓匿名:指的是程序员不需要为这个类声明名字。
特点:匿名内部类本质就是一个子类或者实现类,定义类的同时会创建出对象
作用:更方便的创建子类(实现类)对象
匿名内部类的应用场景
一般不会主动创建匿名内部类
当调用已有方法,发现方法的参数是抽象类或者接口类型时,为了简化代码书写而直接传递匿名内部类对象
匿名内部类定义格式:
new 类名/接口名() {
重写抽象方法;
}
实例
需求:定义Animal的子类猫和狗,创建它们的对象,并且调用各自的eat方法
//动物类
public abstract class Animal {
//进食
public abstract void eat();
}
/**
* 猫类
*/
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
先使用传统方式定义Cat猫类,继承Animal类并创建Cat对象调用eat方法
Cat cat = new Cat();
cat.eat();
使用匿名内部类的方式,将定义类和创建对象两步合并成一步
Animal dog = new Animal() {
@Override
public void eat() {
System.out.println("狗吃肉");
}
};
dog.eat();