亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

詳細分析Java內(nèi)部類——局部內(nèi)部類

瀏覽:60日期:2022-08-26 14:48:23

今天介紹第二種內(nèi)部類——局部內(nèi)部類。

局部內(nèi)部類是什么?顧名思義,那就是定義在局部內(nèi)部的類(逃)。開玩笑的,局部內(nèi)部類就是定義在代碼塊、方法體內(nèi)、作用域(使用花括號“{}”括起來的一段代碼)內(nèi)的類。局部內(nèi)部類有以下特性:

局部內(nèi)部類只能在代碼代碼塊、方法體內(nèi)和作用域中使用。 局部內(nèi)部類同樣可以無限制調(diào)用外部類的方法和屬性。 可以使用abstract修飾,聲明為抽象類。

舉個栗子:

public class Outer2 { public void print(){ class Inner2{ public void test(){ System.out.println('Inner.print()'); } } Inner2 inner2 = new Inner2(); inner2.test(); }}

public class Test { public static void main(String[] args) { Outer2 outer2 = new Outer2(); outer2.print(); }}

這里的Inner2類僅僅在Outer2的print方法中被使用,有效范圍也僅在print函數(shù)之內(nèi)。

通過這段玩具代碼,可能無法理解為什么java中要出現(xiàn)這樣限制這么多而且挺復(fù)雜的東西。讓我們來看看之前的栗子:Java中的回調(diào)

這里把代碼復(fù)制過來:

public class TimePrinter implements ActionListener { @Override public void actionPerformed(ActionEvent e) { Date now = new Date(); System.out.println('Time is ' + now + ' now.'); }}

public class Test { public static void main(String[] args) { ActionListener listener = new TimePrinter(); Timer t = new Timer(1000,listener); t.start(); JOptionPane.showMessageDialog(null,'Quit program?');//彈出對話框,防止主線程結(jié)束導(dǎo)致時鐘結(jié)束 System.exit(0); }}

在這里,我們想要創(chuàng)建一個Timer時,需要往里面?zhèn)魅胍粋€實現(xiàn)了ActionListener接口的對象,而這個對象僅僅在該方法中使用了一次,這時候內(nèi)部類的優(yōu)勢就體現(xiàn)出來了,把類封裝在方法中,不向外界提供任何冗余信息:

public class Test { public static void main(String[] args) { class InnerTimePrinter implements ActionListener { @Override public void actionPerformed(ActionEvent e) { Date now = new Date(); System.out.println('Time is ' + now + ' now.'); } } ActionListener listener = new InnerTimePrinter(); Timer t = new Timer(1000,listener); t.start(); JOptionPane.showMessageDialog(null,'Quit?'); System.exit(0); }}

你也許會覺得,這樣好像只是把類簡單的挪到了另一個類里面,并沒有什么luan用。

表面上,確實如此,但事實上,還是有很多l(xiāng)uan用的。

在《Think in java》中有這樣一句話:使用內(nèi)部類最吸引人的原因是:每個內(nèi)部類都能獨立地繼承一個(接口的)實現(xiàn),所以無論外圍類是否已經(jīng)繼承了某個(接口的)實現(xiàn),對于內(nèi)部類都沒有影響。

我們都知道,java中是不能實現(xiàn)多繼承的,接口也正是為了對多繼承的補充完善給出的方案。而我們程序設(shè)計中有時候會存在一些使用接口很難解決的問題,這個時候我們可以利用內(nèi)部類提供的、可以繼承多個具體的或者抽象的類的能力來解決這些程序設(shè)計問題。可以說,接口只是解決了部分問題,而內(nèi)部類使得多重繼承的解決方案變得更加完整。

據(jù)個人經(jīng)驗,局部內(nèi)部類確實用的不多,但不常用不代表沒有用,知道有這樣一個神奇的內(nèi)部類存在,了解過它的特性之后,可以為你日后的需求提供更多的方案。

至此,本篇講解完畢,歡迎大家繼續(xù)關(guān)注!

以上就是詳細分析Java內(nèi)部類——局部內(nèi)部類的詳細內(nèi)容,更多關(guān)于Java 局部內(nèi)部類的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Java
相關(guān)文章:
主站蜘蛛池模板: 日本特黄特色大片免费视频高清 | 欧美一区二区三区网站 | 色y视频| 亚洲欧美一区二区三区 | 国产精品亚洲欧美日韩区 | 午夜黄色一级片 | 伊人久久亚洲综合 | 久久六月丁香婷婷婷 | 亚洲精品国产第一区第二区国 | 国产精品v免费视频 | 国产亚洲综合一区二区在线 | 亚欧一区 | 毛片基地美国 | 国产99在线a视频 | 黄网址大全免费观看免费 | 中文字幕欧美日韩高清 | 免费观看亚洲 | 成人做爰免费视频免费看 | 激激婷婷综合五 | 在线观看黄色网 | 免费碰碰碰视频在线看 | 国产一区亚洲二区三区毛片 | 日韩欧美一二三区 | 国产视频成人 | 国产精品偷伦视频免费观看的 | 麻豆传媒免费视频 | 欧美日韩国产在线人 | 国产成人在线观看免费网站 | 在线观看 国产 | 热99re久久精品这里都是免费 | 九九热视频精品在线观看 | 爱爱免费 | 国产一级做a爰片在线看 | 亚久久伊人精品青青草原2020 | 青木玲中文字幕一区二区 | 视频在线观看一区二区三区 | 女女互添下身免费视频 | free麻豆 | 日韩版码免费福利视频 | 亚洲福利在线观看 | 99久久精品国产高清一区二区 |