匿名内部类
- 就是一种特殊的局部内部类,所谓匿名指的是程序员不需要为这个类命名。
- new 类名或接口(参数值){
类体(一般是方法重载);
};
为什么使用匿名内部类
- 在实际开发过程中,我们常常遇到这样的情况:一个接口或类的方法的实现方式在程序中只会执行一次,但为了使用它,我们需要创建它的实现类。此时可以使用匿名内部类的方式,可以无需创建新的类,减少代码。
传统方法(不使用匿名内部类)
abstract class Animal {
public abstract void run();
}
- 为实现抽象方法,需生成一个实现类,同时重载抽象类的功能函数。
class Cat extends Animal {
@Override
public void run() {
System.out.println("快速的跑");
}
}
使用匿名内部类
Animal a=new Animal(){
@Override
public void run() {
System.out.println("快速的跑");
}
};
a.run();
- 运行结果如图:
匿名内部类的使用技巧
不使用匿名内部类的情况
public class Test4 {
public static void main(String[] args) {
singing s=new singing() {
@Override
public void sing() {
System.out.println("开始哼起了歌曲");
}
};
doing(s);
}
// 定义静态方法实现对象的回调
public static void doing (singing a){
System.out.println("-------------------------");
a.sing();
}
}
//定义接口
interface singing{
void sing();
}
使用匿名内部类的情况
public class Test4 {
public static void main(String[] args) {
doing(new singing() {
@Override
public void sing() {
System.out.println("开始哼起了歌");
}
});
}
public static void doing (singing a){
System.out.println("-------------------------");
a.sing();
}
}
interface singing{
void sing();
}