匿名内部类也就是没有名字的内部类。这种类的定义之所有没有名称,因为其仅用在使用之处,其他地方也无需要使用。通常和new运算符同时定义类和创建对象。匿名类必须显示地指明其要继承和父类或接口。由匿名类创建的对象就具有继承的父类或实现的接口的特性。
匿名对象也就是没有对象名的对象,我们定义对象时通常给对象定义一个名称称为对象名或对象的引用或对象变量,以便程序调用时根据对象名称类访问。但匿名对象没有名称,只有用于只使用一次地方,通常作用方法的实参使用和调用其方法返回的结果。
interfaceCoolable{
publicvoidclose();
}
classTv{
//关闭电视机
publicvoidcloseTV(Coolablec){
c.close();
}
}
publicclassDemo1 {
publicstaticvoidmain(String[]args) {
Tvtv1=newTv();
//定义匿名类并创建实例c
Coolablec=newCoolable(){
@Override
publicvoidclose() {
System.out.println("使用红外遥控关闭。");
}
};
tv1.closeTV(c);
Tvtv2=newTv();
//定义匿名类并创建匿名实例作为实参传递。
tv2.closeTV(newCoolable(){
@Override
publicvoidclose() {
System.out.println("使用蓝牙遥控关闭。");
}
});
}
}
运行程序,结果如下图所示: