匿名內部類也就是沒有名字的內部類。這種類的定義之所有沒有名稱,因為其僅用在使用之處,其他地方也無需要使用。通常和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("使用藍牙遙控關閉。");
}
});
}
}
運行程序,結果如下圖所示: