詳解Java匿名內(nèi)部類
匿名內(nèi)部類:
先舉個(gè)例子吧,給大家看一下什么是匿名內(nèi)部類,Endeavor剛剛接觸的時(shí)候,覺得哇哦,好奇怪的樣子,這也太別扭了吧,不知道大家是什么感覺。
為了進(jìn)行對比,先舉一個(gè)正常的類方法調(diào)用的例子(大家應(yīng)該都看的懂吧):

輸出結(jié)果為:

接下來便開始說正題吧,匿名內(nèi)部類,通過名字,想必大家就知道什么是匿名內(nèi)部類了吧,
- 1、定義:就是沒有名字的內(nèi)部類(內(nèi)部類之前介紹過了哦)。
- 2、使用內(nèi)部類有什么好處呢,一句話就概括了:簡化書寫,至于是怎么簡化的,哪里簡化了等下再說。
- 3、先說一下什么時(shí)候使用匿名內(nèi)部類,即使用前提和條件:必須存在繼承和實(shí)現(xiàn)關(guān)系的時(shí)候才可以使用,其實(shí)這也很好理解,首先,匿名內(nèi)部類沒有名字,那該如何描述以及new個(gè)對象呢?對,沒錯,要通過繼承它的父類或者實(shí)現(xiàn)一個(gè)接口來達(dá)成這一目的。
下面舉個(gè)例子:

輸出結(jié)果:

看到這幾行代碼,應(yīng)該就不用我來解釋為什么說匿名內(nèi)部類可以簡化書寫了吧。
如何調(diào)用匿名內(nèi)部類中的方法這個(gè)應(yīng)該也是大家好奇的吧,畢竟匿名內(nèi)部類沒有類名該如何調(diào)用方法就成為了一個(gè)問題。
1、匿名內(nèi)部類中只有一個(gè)方法的情況

2、匿名內(nèi)部類有一個(gè)方法調(diào)用起來很容易,那如果有多個(gè)方法呢,大家不會想這樣吧?

輸出結(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)部類自己特有的方法的時(shí)候呢?該如何調(diào)用呢?

輸出結(jié)果:

顯然是不行的,所以Endeavor覺得內(nèi)名內(nèi)部類可以有自己特有的方法,但是前提條件是這個(gè)匿名內(nèi)部類只有這一個(gè)方法。如果有多個(gè)方法的時(shí)候,他只能繼承父類的方法以及重寫這個(gè)方法或?qū)崿F(xiàn)接口,絕不可能在在多個(gè)方法的情況下,調(diào)用自身特有的方法,但是這個(gè)特有的方法可以存在,但無法調(diào)用,不知道大家認(rèn)同與否。
舉例:

輸出結(jié)果:

補(bǔ)充三點(diǎn):
- 1、匿名內(nèi)部類 :匿名內(nèi)部類只是沒有類名,其他的一概成員都是具備的。
之前說過匿名內(nèi)部類存在的前提是要有繼承或者實(shí)現(xiàn)關(guān)系的,但是并沒有看到extends和implements關(guān)鍵字,這是怎么回事呢?
答:很簡單,匿名內(nèi)部類沒有連類名都沒有,使用關(guān)鍵字就更無從說起了。這些由jvm搞定了。
- 2、匿名內(nèi)部類是實(shí)現(xiàn)接口

- 3、接下來和大家分享一下匿名內(nèi)部類中使用最普遍的一種情況,即以實(shí)參的形式使用

輸出結(jié)果:

到此這篇關(guān)于詳解Java匿名內(nèi)部類的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java前后端分離的在線點(diǎn)餐系統(tǒng)實(shí)現(xiàn)詳解
這是一個(gè)基于SpringBoot+Vue框架開發(fā)的在線點(diǎn)餐系統(tǒng)。首先,這是一個(gè)前后端分離的項(xiàng)目。具有一個(gè)在線點(diǎn)餐系統(tǒng)該有的所有功能,感興趣的朋友快來看看吧2022-01-01
詳解eclipse創(chuàng)建maven項(xiàng)目實(shí)現(xiàn)動態(tài)web工程完整示例
這篇文章主要介紹了詳解eclipse創(chuàng)建maven項(xiàng)目實(shí)現(xiàn)動態(tài)web工程完整示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12
java實(shí)現(xiàn)table添加右鍵點(diǎn)擊事件監(jiān)聽操作示例
這篇文章主要介紹了java實(shí)現(xiàn)table添加右鍵點(diǎn)擊事件監(jiān)聽操作,結(jié)合實(shí)例形式分析了Java添加及使用事件監(jiān)聽相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):順序隊(duì)列和循環(huán)隊(duì)列
下面小編就為大家分享一篇java隊(duì)列實(shí)現(xiàn)方法(順序隊(duì)列,循環(huán)隊(duì)列),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-08-08
Java中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式流程詳解
中綴表達(dá)式是一個(gè)通用的算術(shù)或邏輯公式表示方法。,中綴表達(dá)式不容易被計(jì)算機(jī)解析,但仍被許多程序語言使用,因?yàn)樗先藗兊钠毡橛梅?。本文介紹了實(shí)現(xiàn)中綴表達(dá)式的方法,需要的可以參考一下2022-09-09
SpringBoot2 Jpa 批量刪除功能的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot2 Jpa 批量刪除功能的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01

