所谓匿名类就是没有类名的类;
下面代码演示一下匿名内部类的使用
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();
由于建立这个类的时候没有类名,所以称为匿名内部类。