成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

淺談Java面向對象之內部類

瀏覽:4日期:2022-08-10 15:07:05
目錄內部類訪問外部對象訪問內部對象局部內部類匿名內部類靜態內部類內部類

內部類是定義在另一個類中的類,例如 TalkingClock 類中內嵌了 TimePrinter 類:

class TalkingClock{ private int interval; private boolean beep; public TalkingClock(int interval, boolean beep){} public void start(){} public class TimePrinter implements ActionListener{ public void actionPerformed(ActionEvent event){} }}

內部類可以對同一個包中的其他類隱藏細節,同時內部類中的方法可以訪問原來的類中的作用域數據。

訪問外部對象

內部類可以訪問自身的數據字段,也可以訪問創建它的外圍類對象的數據字段。內部類會有一個隱式引用,指向創建它的外部類對象。

淺談Java面向對象之內部類

對外圍類的引用在構造器中設置,編譯器會修改所有內部類的構造器,添加一個對外部類引用的參數。使用外部類引用的語法為:

OuterClass.this

例如內部類 TimePrinter 引用外部類 TalkingClock 的 beep 參數,嚴格來說要寫成這樣。

TalkingClock.this.beep訪問內部對象

使用內部類的構造器時,可以使用下面的語法來實現:

outerObject.new InnerClass(construction parameters)

在外部類的作用域之外,想要引用內部類就需要用下面的語法:

OuterClass.InnerClass局部內部類

局部內部類類似方法的局部變量,在類外或者類的其他方法中不能訪問這個內部類。通常情況下可以在某個方法中局部實現一個類,這個類將用于輔助該方法的功能實現。例如:

public void start(){ class TimePrinter implements ActionListener{ public void actionPerformed(ActionEvent event){ System.out.println('The time is ' + Instant.ofEpochMilli(event.getWhen())); if (beep) {Toolkit.getDefaultToolkit().beep(); } } } TimePrinter listener = new TimePrinter(); TalkingClock timer = new Timer(interval, listener); timer.start();}

聲明局部類時不能有訪問說明符,局部類的作用域被限定在了這個局部類塊中。局部類可以做到對外界的絕對隱藏,這是個很大的優勢。局部類還有個優點,就是可以訪問局部變量。當局部變量傳參進來時,局部變量也會被傳入構造器,此時編譯器會為局部變量提供相應的實例字段,保存一個副本。這么做的好處是,當函數調用結束導致局部變量消失時,局部類還能夠使用這個局部變量。例如將上述的 start 方法改為傳入 2 個參數,仍然不影響正常使用。

public void start(int interval, boolean beep)匿名內部類

使用局部類時,如果只是想建立這個局部類的一個對象,甚至不需要給出這個類的名字,這種類就成為匿名內部類。匿名內部類的語法為:

new SuperType(construction parameters){ inner class methods and data} new InterfaceType(){ methods and data}

SuperType 指的是超類,此時局部類就需要拓展這個類。匿名局部類可以基于接口創建,此時局部類就要實現這個接口。由于構造器的名字必須和類名相同,而匿名局部類沒有類名,因此匿名局部類不能有構造器,此時如果要構造參數就需要傳遞給超類的構造器。例如將上述的局部類改造成匿名內部類:

public void start(){ var listener = new ActionListener(){ public void actionPerformed(ActionEvent event){ System.out.println('The time is ' + Instant.ofEpochMilli(event.getWhen())); if (beep) {Toolkit.getDefaultToolkit().beep(); } } } TalkingClock timer = new Timer(interval, listener); timer.start();} 靜態內部類

有時候使用內部類只是想隱藏一個類,并不需要內部類有外部類的引用,因此可以用 static 關鍵字聲明靜態內部類。例如定義 ArrayAlg 類中實現 minmax 方法,minmax 方法的功能是同時返回一個數組的最大值和最小值,但是用 return 只能返回一個值。因此可以定義一個靜態內部類 Pair,Pair 類有兩個參數可以分別存儲最大和最小值,這樣就可以通過返回 Pair 方法同時返回 2 個值了。

class ArrayAlg{ public static class Pair{ private double first; private double second; public Pair(double f, double s){ first = f; second = s; } public double getFirst() { return first; } public double getSecond() { return second; } } public static Pair minmax(double[] values){ double min = Double.POSITIVE_INFINITY; double max = Double.NEGATIVE_INFINITY; for (double v : values){ if (min > v) min = v; if (max < v) max = v; } return new Pair(min, max); }}

只要內部類不需要訪問外圍類對象,就應該聲明為靜態內部類。和其他內部類不同,靜態內部類可以有靜態字段和方法。

以上就是淺談Java面向對象之內部類的詳細內容,更多關于Java面向對象內部類的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
日韩精品一区二区三区视频在线观看 | 中文字幕巨乱亚洲| 亚洲日本中文字幕区| 成人在线综合网| 蜜桃av综合| 精品日韩在线一区| 亚洲国产视频a| 99riav1国产精品视频| 精品成人在线观看| 国产成人综合亚洲网站| 久久精品国产清高在天天线| 精品国产免费人成电影在线观看四季| 夜夜操天天操亚洲| 亚洲激情亚洲| 国产日韩欧美高清| 国产98色在线|日韩| 欧美中文日韩| 亚洲欧美另类久久久精品| 女女同性女同一区二区三区91| 欧美色窝79yyyycom| 亚洲国产精品影院| 一区二区毛片| 综合电影一区二区三区 | 中文字幕视频一区二区三区久| 男人的天堂久久精品| 久久久噜噜噜久久狠狠50岁| 中文幕一区二区三区久久蜜桃| 91在线精品一区二区| aaa亚洲精品| 91蜜桃网址入口| 亚洲美女淫视频| 高清国产一区二区| 亚洲免费高清视频在线| 7777精品伊人久久久大香线蕉超级流畅 | 精品日韩一区二区三区 | 国产夜色精品一区二区av| 免费永久网站黄欧美| 激情综合网天天干| 91网站在线播放| 午夜电影一区二区三区| 欧美久久一二三四区| 欧美一级欧美一级在线播放| 欧美视频福利| 亚洲国产高清在线观看视频| 一二三区精品| 青娱乐精品在线视频| 国产综合自拍| 午夜精品久久久久影视| 久久久精品免费免费| 国产自产高清不卡| 亚洲成人一区在线| ww久久中文字幕| 亚洲国产精品精华液网站| 欧美一区二区三区播放老司机| 久久99精品国产.久久久久久| 欧美在线观看视频一区二区三区 | 一本大道久久a久久精品综合| 成人污视频在线观看| 亚洲国产精品一区在线观看不卡| 国产亚洲一区二区三区在线播放| 国产日韩成人精品| 一区二区三区视频在线播放| 91浏览器打开| 欧美精品一区二区三区四区| 日本伦理一区二区| 日韩一级二级三级精品视频| 亚洲国产va精品久久久不卡综合| 国产精品美女久久久久aⅴ国产馆| 久久精品一本| 亚洲乱码国产乱码精品精小说 | 蜜桃一区二区三区在线| 日韩午夜精品电影| 色婷婷综合久久久久中文一区二区 | 久久不见久久见免费视频1| 亚洲久久在线| 国产精品自拍一区| 看电视剧不卡顿的网站| 99精品视频免费全部在线| 欧美一区国产在线| 午夜精品视频| 国产欧美日韩视频一区二区| 亚洲福利电影网| 亚洲成av人综合在线观看| 亚洲在线免费| 欧美日韩亚洲国产综合| 亚洲全部视频| 午夜日韩在线电影| 天天色综合成人网| 久久久久一区二区三区四区| 免费久久久一本精品久久区| 色婷婷av一区二区三区gif| 免费在线看成人av| 婷婷丁香久久五月婷婷| 日本aⅴ亚洲精品中文乱码| 欧美日韩在线一区二区| 亚洲欧美国产精品桃花| 国产午夜三级一区二区三| 欧美午夜精品久久久久免费视| 欧美日韩1080p| 国产视频视频一区| 国产嫩草一区二区三区在线观看 | 国产真实乱偷精品视频免| 成人中文字幕在线| 久久er99热精品一区二区| 91官网在线免费观看| 欧美成人伊人久久综合网| 欧美日韩一区不卡| 99re在线视频这里只有精品| 欧美色手机在线观看| 欧美一a一片一级一片| 国产福利91精品一区二区三区| 国产手机视频一区二区| 欧美最新大片在线看| 国产电影一区在线| 欧美最新大片在线看| 欧美成人精品高清在线播放| 亚洲国产片色| 老牛国产精品一区的观看方式| 欧美日韩视频在线第一区| 亚洲精品影院| 国产婷婷一区二区| 欧美a一区二区| 日本精品视频一区二区| 精品久久久久久久人人人人传媒 | 亚洲一卡二卡三卡四卡五卡| av综合在线播放| 亚洲日本在线看| 亚洲人被黑人高潮完整版| 精品一区二区免费看| 亚洲欧美国产高清| 久久精品国产77777蜜臀| 欧美美女一区二区| 亚洲无吗在线| 好看的日韩av电影| 欧美国产激情一区二区三区蜜月| 一区二区三区免费看| 欧美日韩成人综合天天影院| 欧美一卡2卡三卡4卡5免费| 久久国产精品久久精品国产| 尤物网精品视频| 国产精品女上位| 国产精品国模大尺度视频| 亚洲综合一区在线| 麻豆精品国产传媒mv男同| 日韩精品一二区| 9l国产精品久久久久麻豆| 最新日韩在线视频| 国产乱码字幕精品高清av | 樱桃国产成人精品视频| 精品一区精品二区高清| 免费在线一区观看| 国产精品免费区二区三区观看| 亚洲黄一区二区三区| 26uuu色噜噜精品一区二区| 中文字幕中文字幕一区二区| 成人丝袜视频网| 国产乱人伦精品一区二区在线观看| 99久久精品99国产精品 | 97久久超碰精品国产| 91在线小视频| 日韩精品在线一区| 精品乱人伦一区二区三区| 中文字幕av一区二区三区免费看| 欧美日韩久久久| 国产精品水嫩水嫩| 亚洲影院在线观看| 欧美激情第二页| 91精品在线免费观看| 欧美精品成人一区二区三区四区| 亚洲成人高清在线| 免费久久99精品国产自在现线| 99精品视频网| 婷婷综合久久一区二区三区| 欧美国产禁国产网站cc| 有码一区二区三区| 成人综合婷婷国产精品久久| 蜜桃视频一区二区三区| 色呦呦国产精品| 2021国产精品久久精品| 国内成+人亚洲| 国产精品国产三级国产专播品爱网 | 一区二区国产在线观看| 亚洲第一av色| 色婷婷香蕉在线一区二区| 8x8x8国产精品| 紧缚捆绑精品一区二区| 国产亚洲短视频| 日韩av中文字幕一区二区| 国产一区二区主播在线| 亚洲美女视频一区| 在线观看的日韩av| 欧美性xxxxx极品少妇| 天天色综合成人网| 精品久久五月天| 天天av天天翘天天综合网| 99riav久久精品riav| 中文字幕日本乱码精品影院| 国产一区自拍视频| 一本色道久久综合狠狠躁的推荐| 日本欧美加勒比视频|