詳解Java匿名內(nèi)部類
匿名內(nèi)部類:
先舉個例子吧,給大家看一下什么是匿名內(nèi)部類,Endeavor剛剛接觸的時候,覺得哇哦,好奇怪的樣子,這也太別扭了吧,不知道大家是什么感覺。
為了進(jìn)行對比,先舉一個正常的類方法調(diào)用的例子(大家應(yīng)該都看的懂吧):
輸出結(jié)果為:
接下來便開始說正題吧,匿名內(nèi)部類,通過名字,想必大家就知道什么是匿名內(nèi)部類了吧,
- 1、定義:就是沒有名字的內(nèi)部類(內(nèi)部類之前介紹過了哦)。
- 2、使用內(nèi)部類有什么好處呢,一句話就概括了:簡化書寫,至于是怎么簡化的,哪里簡化了等下再說。
- 3、先說一下什么時候使用匿名內(nèi)部類,即使用前提和條件:必須存在繼承和實現(xiàn)關(guān)系的時候才可以使用,其實這也很好理解,首先,匿名內(nèi)部類沒有名字,那該如何描述以及new個對象呢?對,沒錯,要通過繼承它的父類或者實現(xiàn)一個接口來達(dá)成這一目的。
下面舉個例子:
輸出結(jié)果:
看到這幾行代碼,應(yīng)該就不用我來解釋為什么說匿名內(nèi)部類可以簡化書寫了吧。
如何調(diào)用匿名內(nèi)部類中的方法這個應(yīng)該也是大家好奇的吧,畢竟匿名內(nèi)部類沒有類名該如何調(diào)用方法就成為了一個問題。
1、匿名內(nèi)部類中只有一個方法的情況
2、匿名內(nèi)部類有一個方法調(diào)用起來很容易,那如果有多個方法呢,大家不會想這樣吧?
輸出結(jié)果試一下:
那么該如何調(diào)用匿名內(nèi)部類中的多方法呢?
Endeavor有兩種方法,如果大家還有更好的方法多多賜教哦!
1、利用多態(tài)的思想(匿名內(nèi)部類的前提是存在繼承或?qū)崿F(xiàn)關(guān)系的)
輸出結(jié)果:
2、改變方法類型,返回this
輸出結(jié)果:
不知道看完之后大家有沒有什么疑問,如果想調(diào)用匿名內(nèi)部類自己特有的方法的時候呢?該如何調(diào)用呢?
輸出結(jié)果:
顯然是不行的,所以Endeavor覺得內(nèi)名內(nèi)部類可以有自己特有的方法,但是前提條件是這個匿名內(nèi)部類只有這一個方法。如果有多個方法的時候,他只能繼承父類的方法以及重寫這個方法或?qū)崿F(xiàn)接口,絕不可能在在多個方法的情況下,調(diào)用自身特有的方法,但是這個特有的方法可以存在,但無法調(diào)用,不知道大家認(rèn)同與否。
舉例:
輸出結(jié)果:
補充三點:
- 1、匿名內(nèi)部類 :匿名內(nèi)部類只是沒有類名,其他的一概成員都是具備的。
之前說過匿名內(nèi)部類存在的前提是要有繼承或者實現(xiàn)關(guān)系的,但是并沒有看到extends和implements關(guān)鍵字,這是怎么回事呢?
答:很簡單,匿名內(nèi)部類沒有連類名都沒有,使用關(guān)鍵字就更無從說起了。這些由jvm搞定了。
- 2、匿名內(nèi)部類是實現(xiàn)接口
- 3、接下來和大家分享一下匿名內(nèi)部類中使用最普遍的一種情況,即以實參的形式使用
輸出結(jié)果:
到此這篇關(guān)于詳解Java匿名內(nèi)部類的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
淺談Java中ThreadLocal內(nèi)存泄露的原因及處理方式
內(nèi)存泄漏就是我們申請了內(nèi)存,但是該內(nèi)存一直無法釋放,就會導(dǎo)致內(nèi)存溢出問題,本文詳細(xì)的介紹了ThreadLocal內(nèi)存泄露的原因及處理方式,感興趣的可以了解一下2023-05-05idea在工具欄中顯示快速創(chuàng)建包和類的圖標(biāo)的詳細(xì)步驟
點擊需要創(chuàng)建包或者類的位置,在點擊對用的圖標(biāo)就可以快速創(chuàng)建類或者包了,下面小編給大家介紹idea在工具欄中顯示快速創(chuàng)建包和類的圖標(biāo)的詳細(xì)步驟,感興趣的朋友一起看看吧2024-02-02java 實現(xiàn)反射 json動態(tài)轉(zhuǎn)實體類--fastjson
這篇文章主要介紹了java 實現(xiàn)反射 json動態(tài)轉(zhuǎn)實體類--fastjson,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02java 發(fā)送帶Basic Auth認(rèn)證的http post請求實例代碼
下面小編就為大家?guī)硪黄猨ava 發(fā)送帶Basic Auth認(rèn)證的http post請求實例代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11基于java SSM springboot實現(xiàn)景區(qū)行李寄存管理系統(tǒng)
這篇文章主要介紹了基于java SSM springboot實現(xiàn)的景區(qū)行李寄存管理系統(tǒng),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08Java try-catch-finally異常處理機制詳解
這篇文章主要介紹了Java try-catch-finally異常處理機制詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08