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

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

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

瀏覽:41日期: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久久,三上悠亚国产精品一区二区三区
欧美国产一级| 日韩久久99| 久久精品国产99久久| 精品中文字幕一区二区三区四区| 国产情侣久久| 久久蜜桃资源一区二区老牛| 国产精品1区在线| 另类亚洲自拍| 蜜芽一区二区三区| 亚洲精品中文字幕99999| 日韩精品成人| 国产精品xxx在线观看| 国产高清日韩| 国产日韩亚洲| 国产一区一一区高清不卡| 国产中文字幕一区二区三区| 成人在线黄色| 亚洲一级黄色| 亚洲无线观看| 欧美在线看片| 免费一级欧美在线观看视频| 国产精品毛片久久| 午夜国产精品视频免费体验区| 日韩在线卡一卡二| 国产精品视频一区二区三区四蜜臂| 黄色欧美在线| 99在线精品免费视频九九视| 日韩一区中文| 国产丝袜一区| sm捆绑调教国产免费网站在线观看| 91精品精品| 亚洲精品一级| 精品美女视频 | 国产伦精品一区二区三区视频 | 伊人国产精品| 久久精品天堂| 日本中文字幕一区二区视频| 99国产精品私拍| 丝袜美腿诱惑一区二区三区| 欧美性感美女一区二区| 亚洲深深色噜噜狠狠爱网站| 国产精品亚洲欧美日韩一区在线| 国产精品精品| 亚洲激情偷拍| 国产精品一二| jiujiure精品视频播放| 日本视频一区二区| 久久精品1区| 日韩精品一区二区三区av| 久久国内精品| 欧美福利一区| 欧美激情福利| 先锋影音久久久| 国产在线不卡一区二区三区| 蜜臀av一区二区在线免费观看| 精品一区91| 日韩制服丝袜av| 久久久久久婷| 婷婷综合福利| 欧美日韩一二| 国产精品久久久久久久久免费高清| 极品日韩av| 欧美国产中文高清| 午夜在线精品偷拍| 久久精品系列| 亚洲精品亚洲人成在线观看| 韩国三级一区| 欧美日韩亚洲一区三区| 在线日韩视频| 亚洲欧美日本日韩| 日韩一区二区三区在线看| 国内揄拍国内精品久久| 国产欧美精品| 91精品亚洲| 中文字幕亚洲精品乱码| 日韩精品免费视频一区二区三区| 奇米色欧美一区二区三区| 水蜜桃精品av一区二区| 亚洲午夜黄色| 91国内精品| 中文久久精品| 日韩成人综合| 你懂的网址国产 欧美| 欧美中文字幕| 久久久噜噜噜| 电影91久久久| 国产一精品一av一免费爽爽| 久久国产精品亚洲77777| 少妇精品导航| 福利在线一区| 国产亚洲欧美日韩在线观看一区二区| 欧美精品一二| 中文字幕在线视频网站| 欧美国产日韩电影| 在线一区二区三区视频| 亚洲二区精品| 日韩一区自拍| 98精品久久久久久久| 国产精品久久国产愉拍| 日韩综合小视频| 人人爽香蕉精品| 在线亚洲国产精品网站| 亚洲国产综合在线看不卡| 色偷偷色偷偷色偷偷在线视频| 麻豆精品99| 国产精品视频一区视频二区| 日韩va亚洲va欧美va久久| 一区二区高清| 三级一区在线视频先锋| 国产91精品对白在线播放| 91偷拍一区二区三区精品| 久久久亚洲欧洲日产| 国产精品日韩精品中文字幕| 91成人在线| 国产午夜久久av| 国产精品久久久久av蜜臀| 久久国产精品免费精品3p | 国产麻豆一区| 日韩影片在线观看| 日本亚洲最大的色成网站www | 牛牛精品成人免费视频| 亚洲字幕久久| 亚洲综合五月| 免费看欧美美女黄的网站| 久久国产精品99国产| 美女精品在线观看| 日韩影院免费视频| 亚洲精品字幕| 免费精品视频在线| 快she精品国产999| 亚洲美女久久| 国产亚洲一区二区三区啪| 国产精品一区二区免费福利视频| 国产精品99久久免费| 久久亚洲黄色| 精品国产免费人成网站| 激情国产在线| 亚洲午夜视频| 久久香蕉精品| 日韩精品亚洲一区二区三区免费| 日本国产亚洲| 91大神在线观看线路一区| 国产精品嫩模av在线| 欧美影院视频| 国产精品成人3p一区二区三区| 国产一区二区三区不卡视频网站| 欧美羞羞视频| 中文在线一区| 三级久久三级久久久| 国产亚洲字幕| 日韩av有码| 午夜日韩av| 欧美一级网站| 热三久草你在线| 性色一区二区| 欧美aa在线视频| 欧美日中文字幕| 日日摸夜夜添夜夜添国产精品| 国产欧美啪啪| 国产伦乱精品| 国产日产精品_国产精品毛片| 亚洲激情婷婷| 日本中文字幕不卡| 欧美日韩国产高清电影| 欧美aⅴ一区二区三区视频| se01亚洲视频 | 国产99久久| av亚洲在线观看| 日韩不卡一二三区| 黑人精品一区| 免费在线观看成人| 久久一区视频| 在线综合亚洲| 美女视频网站久久| 免费黄色成人| 久久国产人妖系列| 日韩精品影视| 欧美日韩亚洲一区在线观看| 日本国产精品| 日韩国产一二三区| 久久久国产亚洲精品| 日韩精品一区二区三区免费视频| 久久精品免费看| 丝瓜av网站精品一区二区| 美女久久久久久| 快she精品国产999| 手机在线电影一区| 日韩美女国产精品| 日韩精品免费一区二区在线观看 | 国产一区二区三区不卡视频网站 | 亚洲电影有码| 亚洲精品日本| 久久精品官网| 国产精品一国产精品| 免费精品国产的网站免费观看| 国产日产高清欧美一区二区三区| 性欧美69xoxoxoxo| 高清av一区| 国产精品一区免费在线| 亚洲综合电影一区二区三区|