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

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

java中的內部類內部接口用法說明

瀏覽:22日期:2022-08-24 17:31:08

簡介

一般來說,我們創建類和接口的時候都是一個類一個文件,一個接口一個文件,但有時候為了方便或者某些特殊的原因,java并不介意在一個文件中寫多個類和多個接口,這就有了我們今天要講的內部類和內部接口。

內部類

先講內部類,內部類就是在類中定義的類。類中的類可以看做是類的一個屬性,一個屬性可以是static也可以是非static的。而內部類也可以定義在類的方法中,再加上匿名類,總共有5種內部類。

靜態內部類

我們在class內部定義一個static的class,如下所示:

@Slf4jpublic class StaticInnerClass { static class Inner { void print() { log.info('Inner class is: ' + this); } } public static void main(String[] args) { StaticInnerClass.Inner inner = new StaticInnerClass.Inner(); inner.print(); }}

因為static變量可以直接根據類名來存取,所以我們使用new StaticInnerClass.Inner()來實例化內部類。

非靜態內部類

class中定義的類也可以是非靜態的,如下所示:

@Slf4jpublic class InnerClass { class Inner { void print() { log.info('Inner class is: ' + this); } } public static void main(String[] args) { InnerClass.Inner inner = new InnerClass().new Inner(); inner.print(); }}

要訪問到類的變量,需要實例化外部內,然后再實例化內部類:new InnerClass().new Inner()。

注意這里我們需要使用到兩個new。

靜態方法內部類

我們可以在靜態方法中定義一個類,這個類其實就相當于方法中的變量,這個變量當然不能是static的。我們看下面的例子:

@Slf4jpublic class StaticMethodInnerClass { private static String x = 'static x'; public static void print() { class MyInner { public void printOuter() { log.info('x is ' + x); } } MyInner i = new MyInner(); i.printOuter(); } public static void main(String[] args) { StaticMethodInnerClass.print(); }}

方法中的類,我們是無法在外部實例化的。

非靜態方法的內部類

同樣的非靜態方法也可以定義內部類:

@Slf4jpublic class MethodInnerClass { private String x = 'non static x'; public void print() { class MyInner { public void printOuter() { log.info('x is ' + x); } } MyInner i = new MyInner(); i.printOuter(); } public static void main(String[] args) { new MethodInnerClass().print(); }}

注意,這里需要先實例化外部類才可以繼續調用。

匿名類

最后一個,匿名類,直接在需要的時候實例化的類。匿名類我們遇到了很多次了,比如在構建SortedSet的時候,可以傳入自定義的Comparator,我們可以用匿名類來實現,也可以直接使用lambda表達式。

public class AnonymousClass { public static void main(String[] args) { SortedSet sortedSet1 = new ConcurrentSkipListSet(new Comparator(){ @Override public int compare(Object o1, Object o2) { return 0; } }); SortedSet sortedSet2 = new ConcurrentSkipListSet((o1, o2) -> 0); }}

內部接口

Inner Interface是指在接口中定義的接口。最常見的就是Map中的Entry了:

public interface Map<K, V> { interface Entry<K, V> { K getKey(); }

這里的內部接口一定是static的,因為接口是不能實例化的,所以為了訪問到接口中的接口,必須定義為static。如果不指定,則默認就是static。

我們看一個該內部接口的實現:

public class MapImpl implements Map.Entry{ @Override public Object getKey() { return 0; } @Override public Object getValue() { return null; } @Override public Object setValue(Object value) { return null; }}

總結

本文講解了5個內部類的實現和一個內部接口的應用。大家只要把內部的類或者接口看成一個變量,就可以很好的理解上面的內容了。

本文的例子https://github.com/ddean2009/learn-java-base-9-to-20

補充知識:內部類(成員內部類、靜態內部類、方法內部類)

一:成員內部類:

最常見的內部類就是成員內部類,也稱作普通內部類;

java中的內部類內部接口用法說明

1、Inner類定義在Outer類的內部,相當于Outer類的成員變量的位置,Inner類可以使用任意訪問修飾符,如:public、private、protected等。

2、Inner類中定義的test()方法可以訪問Outer類中的數據,不受訪問控制符的影響。

3、 定義了成員內部類后,必須使用外部類對象來創建內部類對象,而不能直接去 new 一個內部類對象,即:內部類 對象名 = 外部類對象.new 內部類( );如創建Inner的內部類對象:要先創建外部類對象:Outer o = new outer(); 創建內部類:Inner i = o.new Inner();訪問Inner中的test()方法:i.test();

例如:

java中的內部類內部接口用法說明

4、如果外部類和內部類具有相同的成員變量或方法,內部類可以直接訪問內部類的成員變量或方法,但如果內部類訪問外部類的成員變量或者方法時,需要使用this關鍵字;如下:

java中的內部類內部接口用法說明

二:靜態內部類

靜態內部類就是用static修飾的內部類,這種內部類的特點是:

1、靜態內部類不能直接訪問外部類的非靜態成員,但,可以通過new 外部類().成員的方式訪問;

java中的內部類內部接口用法說明

2、如果外部類的靜態成員與內部類的靜態成員相同, 可以通過'類名.靜態成員'來訪問外部類的靜態成員;如果不同,可以直接調用外部類的靜態成員名。

java中的內部類內部接口用法說明

java中的內部類內部接口用法說明

3、創建靜態內部類的對象時,不需要外部類的對象,可以直接創建;

三:方法內部類:

1、方法內部類就是定義在外部類的方法中,方法內部類只在該方法內可以用;

java中的內部類內部接口用法說明

2、由于方法內部類不能在外部類的方法以外的地方使用,因此方法內部類不能使用訪問控制符和 static 修飾符。

以上這篇java中的內部類內部接口用法說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
精品欧美久久久| 暖暖成人免费视频| 欧美福利在线| 欧美一区二区成人6969| 日本怡春院一区二区| 99视频一区| 中文字幕日韩一区二区| 欧美不卡一区| 欧美一级高清片| 国产一区二区三区香蕉| 欧美色综合天天久久综合精品| 亚洲国产精品天堂| 中文精品在线| 中文字幕中文字幕中文字幕亚洲无线| 99在线热播精品免费| 日韩一区国产二区欧美三区| 九色|91porny| 欧美性xxxxxx少妇| 国内久久精品视频| 欧美最猛性xxxxx直播| 性做久久久久久免费观看| 国产精品久久久久9999高清| 亚洲嫩草精品久久| 亚洲激情专区| 亚洲午夜在线视频| 蜜桃久久av| 热久久免费视频| 欧美日韩在线一区二区| 激情综合色综合久久| 懂色av一区二区夜夜嗨| 日韩欧美激情四射| 国产经典欧美精品| 精品国偷自产国产一区| 99免费精品视频| 国产网站一区二区三区| 国产一区二区中文| 日韩一区中文字幕| 亚洲高清资源| 亚洲综合激情另类小说区| 中文精品视频一区二区在线观看| 亚洲欧美日韩一区二区| 亚洲在线成人| 青青草国产精品亚洲专区无| 欧美无砖专区一中文字| 狠狠色丁香久久婷婷综合丁香| 欧美精品123区| www.欧美色图| 国产精品乱码人人做人人爱 | 久久成人18免费观看| 欧美日韩日本视频| 成人高清视频免费观看| 日本一区二区动态图| 在线视频成人| 日日夜夜精品视频免费| 欧美乱熟臀69xxxxxx| 大白屁股一区二区视频| 欧美激情综合五月色丁香小说| 亚洲激情另类| 日韩精品免费视频人成| 欧美日韩色综合| 成人在线视频首页| 中文字幕成人av| 亚洲资源av| 国产麻豆日韩欧美久久| 国产亚洲1区2区3区| 国产一区二区黄色| 九色综合国产一区二区三区| 欧美一级二级三级蜜桃| 欧美xxx在线观看| 亚洲激情综合网| 欧美性受xxxx黑人xyx| 成人性生交大片免费看中文网站| 国产精品色婷婷久久58| 久久综合影音| jizzjizzjizz欧美| 亚洲激情第一区| 欧美日韩国产天堂| 欧美伊人久久| 亚洲国产精品久久人人爱蜜臀 | 欧美吞精做爰啪啪高潮| 成人性色生活片| 亚洲摸摸操操av| 欧美丰满高潮xxxx喷水动漫| 欧美jizzhd精品欧美巨大免费| 亚洲国产成人va在线观看天堂 | 亚洲午夜精品17c| 欧美精品久久一区| 欧美三级午夜理伦三级中文幕| 亚洲第一综合色| 日韩欧美久久久| 一区二区精品在线观看| 国内精品在线播放| 自拍偷自拍亚洲精品播放| 欧美在线观看视频一区二区| 欧美freesex交免费视频| 亚洲18女电影在线观看| 欧美xxxxx牲另类人与| 一区二区三区偷拍| 国产剧情一区二区三区| 成人免费小视频| 欧美精品第1页| 亚洲精品国产日韩| 国产一区二区三区在线观看精品| 亚洲视频免费在线| 欧美一区二区三区四区高清| 国产乱码精品| 91视视频在线观看入口直接观看www| 日韩在线一区二区| 国产日韩亚洲欧美综合| 欧美群妇大交群的观看方式 | 欧美一区二区人人喊爽| 国产精品人人爽人人做我的可爱| 国产精品一区二区无线| 亚洲午夜一区二区| 国产欧美日韩视频在线观看| 欧美亚一区二区| 亚洲国产片色| bt欧美亚洲午夜电影天堂| 日韩av网站在线观看| 国产精品久久久久久亚洲毛片| 欧美丰满少妇xxxbbb| 国产区日韩欧美| www.欧美日韩| 免费不卡在线观看| 综合久久给合久久狠狠狠97色 | 日韩综合小视频| 国产精品天美传媒沈樵| 欧美一级二级在线观看| 老**午夜毛片一区二区三区| 在线成人黄色| 成人免费的视频| 精品一区二区三区久久| 亚洲va国产天堂va久久en| 欧美国产在线观看| 欧美一区二区三区四区在线观看| 久久av最新网址| 亚洲人体一区| 91丨porny丨最新| 激情综合网最新| 亚洲va国产va欧美va观看| 中文字幕一区二区5566日韩| 欧美精品一区视频| 91精品国产品国语在线不卡| 欧美亚洲日本国产| 一本一本大道香蕉久在线精品| 99精品欧美| 欧美日韩亚洲一区二区三区在线 | 欧美韩国日本综合| 91精品欧美综合在线观看最新| 性xx色xx综合久久久xx| 国产精品v亚洲精品v日韩精品| 国产不卡视频在线观看| 久久疯狂做爰流白浆xx| 午夜精品久久久久久久| 夜夜精品视频一区二区 | 亚洲欧美激情视频在线观看一区二区三区 | 成人小视频免费观看| 精品在线免费观看| 天天av天天翘天天综合网| 亚洲精品国产视频| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲图色在线| 午夜欧美视频| 91毛片在线观看| 99久久综合狠狠综合久久| 成人精品免费看| 粉嫩久久99精品久久久久久夜| 国产露脸91国语对白| 精品一区二区日韩| 老色鬼精品视频在线观看播放| 亚洲欧洲一区| 国产亚洲激情| 亚欧成人精品| 91久久精品一区二区三区| 欧美午夜一区二区三区| 在线观看亚洲专区| 欧美日韩一区二区在线观看| 欧美日韩的一区二区| 欧美久久一区二区| 欧美一区二区三区色| 欧美一级精品在线| 日韩一区二区三区视频在线 | 免费精品视频在线| 裸体一区二区三区| 伦理电影国产精品| 国产又黄又大久久| 国产乱子伦一区二区三区国色天香| 国产一区欧美一区| 成人做爰69片免费看网站| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 色悠久久久久综合欧美99| 色婷婷久久一区二区三区麻豆| 久久亚洲精品伦理| 欧美午夜不卡在线观看免费| 欧美精品一二三| 日韩欧美黄色影院| 久久蜜桃香蕉精品一区二区三区| 国产欧美一区二区三区在线老狼| 中文字幕欧美日韩一区| 亚洲婷婷国产精品电影人久久|