您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“anonymousinnerclass怎么用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“anonymousinnerclass怎么用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
anonymousinnerclass(匿名內部類)是否可以extends(繼承)其它類,是否可以implements(實現)interface(接口)?
匿名內部類在實現時必須借助一個接口或者一個抽象類或者一個普通類來構造,從這過層次上講匿名內部類是實現了接口或者繼承了類,但是不能通過extends或implement關鍵詞來繼承類或實現接口。
幾點說明:
一、由于匿名內部類沒有名字,所以它沒有構造函數。因為沒有構造函數,所以它必須完全借用父類的構造函數來實例化,匿名內部類完全把創建對象的任務交給了父類去完成。
二、在匿名內部類里創建新的方法沒有太大意義,但它可以通過覆蓋父類的方法達到神奇效果,如上例所示。這是多態性的體現。
三、因為匿名內部類沒有名字,所以無法進行向下的強制類型轉換,持有對一個匿名內部類對象引用的變量類型一定是它的直接或間接父類類型。
四、注意匿名內部類的聲明是在編譯時進行的,實例化在運行時進行。這意味著for循環中的一個new語句會創建相同匿名類的幾個實例,而不是創建幾個不同匿名類的一個實例。
class Car{
void move(){};
}
interface Person{
void learn();
}
abstract Class Animal{
abstract void eat();
}
public class AnonymousInnerClassDemo {
public static void main(String[] args){
Car car = new Car(){
void move(){
System.out.println("匿名內部類的move()方法");
}
}
car.move();
Person person = new Person(){
void learn(){
System.out.println("匿名內部類的learn()方法");
}
}
person.learn();
Aninal animal = new Animal(){
void eat(){
System.out.println("匿名內部類的eat()方法");
}
}
}
}
讀到這里,這篇“anonymousinnerclass怎么用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。