匿名内部类的格式:父类/接口 对象 = new 父类/接口(){ 重写父类/接口中的方法 };
这样做就把子类继承父类,重写父类中的方法,创建子类对象,合成了一步完成,减少了其中创建子类的过程。或者将实现类实现接口,重写接口中的方法,创建实现类对象,合成了一步完成,减少了其中创建实现类的过程。下面将会用代码演示如何使用匿名内部类。
1.创建使用匿名内部类格式:父类 对象 = new 父类(){ 重写父类中的方法 };
创建父类
public class Fu {
public void method(){
System.out.println("我是父类,你想继承我然后再去重写我的方法?");
}
}
创建Demo类
使用匿名内部类,直接重写父类的方法,省去创建子类继承父类的过程和创建子类对象的过程。
public class Demo {
public static void main(String[] args) {
//创建匿名内部类,直接重写父类的方法,省去了创建子类继承,创建子类对象的过程
Fu fu= new Fu(){
@Override
public void method() { //重写父类method方法
super.method();
}
};
fu.method(); //调用method方法
}
2.创建使用匿名内部类格式:接口 对象=new 接口(){ 重写接口中的方法 };
创建接口AnonymousInter
public interface AnonymousInter {
public abstract void eat();
}
创建Demo1类
使用匿名内部类,直接重写接口中的方法,省去创建实现类实现接口的过程和创建实现类对象的过程。
public class Demo1 {
public static void main(String[] args) {
//创建匿名内部类,省区了创建接口的实现类的过程,以及定义实现类对象的过程
AnonymousInter an=new AnonymousInter() {
@Override
public void eat() { //重写接口的eat方法
System.out.println("晚饭我吃了");
}
};
an.eat();
}
}
3.由上我们可以总结,匿名内部类在父类和接口中可以起到简化代码的作用。因为可以省去创建子类和实现类的过程。 我们可以直接利用父类和接口得到我们想要的东西,因此匿名内部类的最终产物是 子类/实现类对象。