Java中匿名類的兩種實現(xiàn)方式
使用匿名內(nèi)部類課使代碼更加簡潔、緊湊,模塊化程度更高。內(nèi)部類能夠訪問外部內(nèi)的一切成員變量和方法,包括私有的,而實現(xiàn)接口或繼承類做不到。然而這個不是我說的重點,我說的很簡單,就是匿名內(nèi)部類的兩種實現(xiàn)方式:第一種,繼承一個類,重寫其方法;第二種,實現(xiàn)一個接口(可以是多個),實現(xiàn)其方法。下面通過代碼來說明:
public class TestAnonymousInterClass{
public static void main(String args[]){
TestAnonymousInterClass test=new TestAnonymousInterClass();
test.show();
}
//在這個方法中構(gòu)造了一個匿名內(nèi)部類
private void show(){
Out anonyInter=new Out(){// 獲取匿名內(nèi)部類實例
void show(){//重寫父類的方法
System.out.println("this is Anonymous InterClass showing.");
}
};
anonyInter.show();// 調(diào)用其方法
}
}
// 這是一個已經(jīng)存在的類,匿名內(nèi)部類通過重寫其方法,將會獲得另外的實現(xiàn)
class Out{
void show(){
System.out.println("this is Out showing.");
}
}
程序運行的輸出結(jié)果為:
this is Anonymous InterClass showing.
所以在這里看出,匿名內(nèi)部類有了自己的實現(xiàn)。其實很簡單,使用匿名內(nèi)部類是因為我這地方需要有點什么特殊的實現(xiàn),所以我就在這地方把具體實現(xiàn)也給了出來了。然后我就在這地方獲取它的實例,調(diào)用它的方法。
接口的方式,只要把父類換成接口就行了,沒必要給出代碼了。
使用匿名內(nèi)部類時我們不要忘了我們的目的,我們只是在這地方想對某個類有特殊的實現(xiàn)。而不要想得太多,在匿名內(nèi)部編寫其它的方法。在匿名內(nèi)部類中編寫的自己的方法是不可見的。此種做法是毫無意義的,當(dāng)然一般也不會這么做。在這里只是告訴初學(xué)者對于匿名內(nèi)部類不要想的太多,而要這么想:匿名內(nèi)部類就是重寫父類或接口的方法。
匿名內(nèi)部類是沒有名字的,所以我們沒辦法獲得其類型,而只能把它當(dāng)作超類或接口類型來使用。
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
Spring5+SpringMvc+Hibernate5整合的實現(xiàn)
這篇文章主要介紹了Spring5+SpringMvc+Hibernate5整合的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
SpringBoot+hutool實現(xiàn)圖片驗證碼
本文主要介紹了SpringBoot+hutool實現(xiàn)圖片驗證碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
Java數(shù)據(jù)結(jié)構(gòu)專題解析之棧和隊列的實現(xiàn)
從數(shù)據(jù)結(jié)構(gòu)的定義看,棧和隊列也是一種線性表。其不同之處在于棧和隊列的相關(guān)運算具有特殊性,只是線性表相關(guān)運算的一個子集。更準確的說,一般線性表的插入、刪除運算不受限制,而棧和隊列上的插入刪除運算均受某種特殊限制。因此,棧和隊列也稱作操作受限的線性表2021-10-10
零基礎(chǔ)寫Java知乎爬蟲之將抓取的內(nèi)容存儲到本地
上一回我們說到了如何把知乎的某些內(nèi)容爬取出來,那么這一回我們就說說怎么把這些內(nèi)容存儲到本地吧。2014-11-11

