日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解Java內部類——匿名內部類

瀏覽:38日期:2022-08-26 14:23:52

今天來看看另一個更加神奇的類——匿名內部類。

就像它的名字表示的那樣,這個類是匿名的,用完之后,深藏功與名,就像掃地僧那樣默默潛藏于深山之中。匿名內部類不僅沒有名字,連class關鍵字都省掉了,而且匿名內部類必須繼承于某個類或者實現某個接口,長的就像這樣:

new 父類(參數列表)|實現接口() { //匿名內部類的內部定義 }

來看一個栗子:

public abstract class Human { public abstract void walk();}

這是一個抽象類,如果使用匿名內部類來繼承的話是這樣的:

public class AnonymousTest { public static void main(String[] args) { Human human = new Human(){ public void walk(){System.out.println('AnonymousHuman can walk.'); }; }; human.walk(); }}

簡單粗暴,看起來就像局部內部類的簡化版。如果不使用匿名內部類,會是怎樣呢?

我們需要先創建一個類來繼承這抽象類:

public class Man extends Human { @Override public void walk() { System.out.println('Man can walk.'); }}

然后再來使用這個類:

public class AnonymousTest { public static void main(String[] args) { Human human = new Man(); human.walk(); }}

因為一個單獨的類往往放在一個單獨的文件中,如果這個類只需要創建一個對象,那未免有些大材小用了,從上面的栗子可以比較出匿名內部類的一個優勢:在類只需要創建一個對象的情況下更加簡單方便。

再舉一個實際一點的栗子:

public class AnonymousTest { public static void main(String[] args) { Thread t = new Thread() { public void run() {for (int i = 0; i < 10; i++) { try { sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(i);} } }; t.start(); }}

這里創建了一個繼承于Thread的匿名內部類,覆蓋了其中的 run方法,并創建了一個實例返回給了t,然后再調用run方法,可以看到,匿名內部類只能存在一個實例對象,因為new過一次就無法再創建了,也許會覺得局部內部類已經很局限了,為什么要出現比局部內部類適用范圍更小的匿名內部類?、

這你就不懂了吧,在Java的實際使用中,匿名內部類大有用處,為什么要使用匿名內部類呢?

有時候,我們創建的類只需要一個實例,比如說在多線程中,要使用多線程,一般先繼承Thread類或者實現Runnable接口,然后再去調用它的方法,而每個任務一般都不一樣,每次都新建一個類顯然會很難管理,因為每個類只用一次就丟掉了,這個時候使用匿名內部類就很方便了,不僅不需要管理一堆一次性類,而且創建起來簡單粗暴。就像上述栗子,還能簡化成這樣:

public class AnonymousTest { public static void main(String[] args) { new Thread() { public void run() {for (int i = 0; i < 10; i++) { try { sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(i);} } }.start(); }}

創建實例后直接調用run方法,簡單粗暴。

匿名內部類不僅可以繼承于類,也可以實現于接口,比如說這樣:

public class AnonymousTest { public static void main(String[] args) { new Thread(new Runnable() { public void run() {for (int i = 0; i < 10; i++) { try { sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(i);} } }).start(); }}

當然,還有些不得不用內部類的情況,類只能繼承于一個類,如果一個類需要使用到另一個包中的另一個類的一個protected方法,卻已經繼承于另一個類,那么這個時候就不得不用內部類來解決了。

比如說,還有一個Woman(女人)類:

public class Woman { protected void dance(){ System.out.println('Woman can dance.'); }}

這個時候,如果Man(男人)也難不住寂寞,想要dance(跳舞)一下,那該怎么辦呢?繼承Woman類?顯然不合乎邏輯,而且也無法實現,因為已經繼承于Human類了,但就是想要dance,該怎么辦?

內部類的出現讓這個問題變得很簡單:

public class Man extends Human { @Override public void walk() { System.out.println('Man can walk.'); } public void dance(){ new Woman(){ public void manDance(){super.dance(); } }.manDance(); }}

因為在不同的包下,不能直接使用Woman的dance方法,但是可以用內部類來繼承,從而調用protected方法,然后再放入Man的方法中,這樣,Man也能像Woman一樣dance了:

public class AnonymousTest { public static void main(String[] args) { Man human = new Man(); human.walk(); human.dance(); }}

當然,使用匿名內部類還是有很多限制的:

1、匿名內部類必須是繼承一個類或者實現一個接口,但是兩者不可兼得,同時也只能繼承一個類或者實現一個接口。

2、匿名內部類不能定義構造函數。

3、匿名內部類中不能存在任何的靜態成員變量和靜態方法。

4、匿名內部類是特殊的局部內部類,所以局部內部類的所有限制同樣對匿名內部類生效。

5、匿名內部類不能是抽象的,它必須要實現繼承的類或者實現的接口的所有抽象方法。

那么問題來了,怎樣初始化一個匿名內部類呢?畢竟匿名內部類是不能有構造器的。

當然,首先,還是可以使用初始化塊來實現的,就像這樣:

public class AnonymousTest { public static void main(String[] args) { Human human = new Human() { private String name; {name = 'human'; } @Override public void walk() {System.out.println(name + ' walk.'); } }; human.walk(); }}

但是這樣顯然就比較呆板,不夠靈活,無法接受外部參數,那么怎樣靈活使用呢?不要心急,方法總比問題多,還是有辦法解決的:

public class AnonymousTest { public static void main(String[] args) { Human human = new AnonymousTest().getHumanInstance('Frank'); human.walk(); } public Human getHumanInstance(final String name){ return new Human() { private String nameA; {nameA = name; } @Override public void walk() {System.out.println(nameA + ' walk.'); } }; }}

這里利用初始化塊來對匿名內部類進行初始化,注意,如果匿名內部類需要使用外部的參數或者變量,那么必須使用final修飾,因為內部類使用的其實是參數的拷貝,并不是參數本身,為了更明顯的表明參數不可變,編譯器會要求使用final關鍵字來修飾需要使用的變量。

至此,匿名內部類講解完畢,歡迎大家繼續關注!

以上就是詳解Java內部類——匿名內部類的詳細內容,更多關于Java 匿名內部類的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲美女久久精品| 日韩精品中文字幕第1页| 亚洲精品.com| 日韩精品久久久久久久电影99爱| 国产精品成久久久久| 国产a亚洲精品| 日韩av免费大片| 精品国产一区二| 97精品97| 久久天堂精品| 国产亚洲综合精品| 免费不卡在线观看| 热久久久久久| 久久亚洲人体| 欧美日韩精品免费观看视完整| 99精品视频精品精品视频| 蜜臀91精品国产高清在线观看| 99国产精品私拍| 中文字幕日韩高清在线| 国产毛片精品| 成午夜精品一区二区三区软件| 国产极品嫩模在线观看91精品| 91青青国产在线观看精品| 欧美国产中文高清| 国产综合欧美| 日韩欧美四区| 日本在线不卡视频| 美女视频一区在线观看| 欧美另类中文字幕 | 91亚洲国产成人久久精品| 亚洲精品大片| 亚洲国产专区校园欧美| 欧美在线综合| 欧美日韩一区二区三区不卡视频| 中文字幕人成乱码在线观看| 亚洲精品在线a| 亚洲一区网站| 亚洲欧洲午夜| 亚洲欧美日韩在线观看a三区| 日韩大片在线播放| 免费一区二区三区在线视频| 欧美成人aaa| 国产欧美午夜| 中文在线а√在线8| 亚洲第一区色| 亚洲欧美日本日韩| 最新亚洲国产| 亚洲精品第一| 久草免费在线视频| 欧美日韩伊人| 激情久久99| 久久婷婷av| 日韩不卡一区二区三区| 高清一区二区| 久久激五月天综合精品| 亚洲欧美一级| 免费中文字幕日韩欧美| 中文字幕av一区二区三区四区| 国产精品日本欧美一区二区三区| 国产日韩亚洲| 欧美日韩国产综合网| 99视频精品免费观看| 久久精品午夜| 9999国产精品| 天堂资源在线亚洲| 亚洲欧美专区| 日韩精品一级中文字幕精品视频免费观看 | 欧美一区激情| 国产不卡精品| 婷婷综合电影| 国产精品视频3p| 久久久亚洲欧洲日产| 视频精品一区二区| 国产精品一区二区精品视频观看| 亚洲精品**中文毛片| 日韩av电影一区| 一本一道久久a久久精品蜜桃| 久久国产精品美女| 综合一区av| 欧美理论视频| 国内精品麻豆美女在线播放视频| 亚洲专区视频| 红桃视频亚洲| 国产在线观看www| 国产精品一区二区av日韩在线| 巨乳诱惑日韩免费av| 久久夜夜操妹子| 麻豆国产欧美一区二区三区| 亚洲免费一区二区| 日韩欧美精品| 免费一区二区三区在线视频| 日韩欧美2区| 亚洲少妇诱惑| 一区二区小说| 日韩欧美午夜| 久久久久久一区二区| 国产精品巨作av| 日本午夜精品久久久| 综合激情网...| 亚洲一区亚洲| 亚洲成人一区| 肉色欧美久久久久久久免费看| 久久精品一区| 久久精品xxxxx| 日韩不卡一二三区| 日本不卡视频在线观看| 久久三级中文| 国产精品久久久久久久久久妞妞 | 亚洲区第一页| 精品国产精品国产偷麻豆 | 91精品国产自产在线丝袜啪| 亚洲精品2区| 91亚洲自偷观看高清| 欧美日本二区| 免费日韩成人| 久久精品卡一| 欧美成人a交片免费看| 日韩国产欧美在线视频| 亚州av乱码久久精品蜜桃| 一区二区小说| 欧美日韩视频| 亚洲精品进入| 美女精品久久| 色一区二区三区| 99精品在线免费在线观看| 都市激情国产精品| 欧美午夜精品一区二区三区电影| 欧美日韩国产免费观看视频| 日韩成人av影视| 久久伊人久久| 久久久久.com| 久久香蕉精品| av日韩中文| 免费不卡在线观看| 亚洲手机在线| 91精品一区二区三区综合在线爱| 三上亚洲一区二区| 国产+成+人+亚洲欧洲在线| 精品国产亚洲一区二区三区在线| 九九九精品视频| 91亚洲国产| 国产在线欧美| 丝袜美腿一区二区三区| 伊人久久亚洲| 日韩制服丝袜av| 日韩精品欧美| 老鸭窝毛片一区二区三区| 久久国产成人午夜av影院宅| 宅男在线一区| 欧美精品97| 久久蜜桃精品| 欧美一区二区三区激情视频| 综合精品一区| 一区二区国产精品| 亚洲综合在线电影| 中文字幕乱码亚洲无线精品一区| 97精品国产| 一区免费视频| 国产精品99精品一区二区三区∴| 久久99伊人| 在线成人直播| 成人av二区| 久久久久久色| 美女精品在线| 国产精品手机在线播放| 秋霞影院一区二区三区| 91嫩草精品| 九一精品国产| 蜜芽一区二区三区| 亚洲夜间福利| 国产资源在线观看入口av| 国产99精品| 蜜臀av一区二区三区| 国产精品久久777777毛茸茸| 日本久久成人网| jizzjizz中国精品麻豆| 蜜桃av一区二区三区电影| 久久久久久黄| 精品国产乱码久久久久久樱花 | 国产精品99一区二区三区| 另类激情亚洲| 国产综合欧美| 日本在线啊啊| 激情综合网址| 亚洲精一区二区三区| 日韩中文字幕区一区有砖一区| 蜜桃传媒麻豆第一区在线观看| 在线综合欧美| 久久国产精品99国产| 精品资源在线| 国产视频久久| 日韩一区免费| 免播放器亚洲一区| 国产视频一区二区在线播放| 五月亚洲婷婷 | 91精品国产调教在线观看| 国产精品一区三区在线观看| 日韩一区二区三区精品| 国产亚洲一级| 亚洲精品在线国产|