匿名内部类

所谓匿名类就是没有类名的类;

下面代码演示一下匿名内部类的使用

package Stephen.Class.chapter7;
//匿名内部类测试
public class AnonymousInnerClassTest {
    public static void main(String[] args) {
        DustMan man = new DustMan();
        man.cleanWithBroom();
        man.cleanWithDustCollector();
    }
}
//清洁工
class DustMan{
    //使用扫帚清洁
    public void cleanWithBroom(){
        Utility util = new Utility(){//匿名内部类的建立
            public void clean(){
                System.out.println("正在使用打扫清洁路面");
            }
        };
        util.clean();
    }
    //使用吸尘器清洁
    public void cleanWithDustCollector(){
        ElectronicUtil util = new ElectronicUtil(){
            public void clean(){
                System.out.println("正在使用吸尘器清洁路面");
            }
        };
        util.clean();
    }
}
//设备
interface Utility{
    public void clean();
}
//电子设备
class ElectronicUtil{
    public void clean(){
        System.out.println("使用电子设备清洁");
    }
}

运行结果:

请注意如下的代码:

Utility util = new Utility(){//匿名内部类的建立
    public void clean(){
        System.out.println("正在使用打扫清洁路面");
    }
};

这段代码相当的器官,看上去很像是建立一个类型为Utility的对象,但是接口Utility并不能被实例化,而且在new Utility()后面又接着以花括号包围起来的代码,实际上这里建立了一个匿名内部类,这个类实现了Utility接口并且覆写了Utility接口的clean方法,其作用等同于以下的代码

class AnonymousInnerClass implements Utility{
    public void clean(){
        System.out.println("正在使用扫帚清洁路面");
    }
}
AnonymousInnerClass util = new AnonymousInnerClass();

由于建立这个类的时候没有类名,所以称为匿名内部类。

原文地址:https://www.cnblogs.com/lidaojian/p/2563330.html