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

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

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

瀏覽:2日期: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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本不卡一区二区三区| 丝袜国产日韩另类美女| 91午夜精品| 精品视频一区二区三区在线观看| 大香伊人久久精品一区二区| 欧美亚洲日本精品| 蜜桃成人av| 一区二区电影在线观看| 亚洲18在线| 久久国内精品自在自线400部| 国产精品日韩精品中文字幕| 日韩在线综合| 日韩av中文字幕一区二区三区| 高清久久一区| 亚洲久草在线| 国产美女高潮在线| 首页国产欧美久久| 精品国产一区二区三区av片| 红桃视频国产一区| 久久精品国产一区二区| 欧美在线资源| 精品视频99| 亚洲三级毛片| 国产成人精品亚洲日本在线观看| 欧美精品黄色| 国际精品欧美精品| 亚洲另类黄色| 亚洲高清二区| 久久精品毛片| 亚洲自拍另类| 日韩av二区| 日韩av一二三| 免费精品视频| 久久久久久黄| 成人污污视频| 国产精品久一| 日韩国产欧美一区二区三区| 亚洲精品电影| 欧美日韩精品免费观看视欧美高清免费大片| 亚洲一区免费| 欧美日韩高清| 久久久久久黄| 国产麻豆久久| 日韩久久精品网| 国产91欧美| 久久精品国产成人一区二区三区| 天堂久久一区| 日韩高清电影一区| 日韩激情网站| 91亚洲无吗| 91成人精品在线| 日本成人在线一区| 日韩综合一区二区| 婷婷综合成人| 日本在线一区二区三区| 日韩精品视频在线看| 日韩精品欧美大片| 日韩高清中文字幕一区| 欧美一区二区三区免费看| 国产女人18毛片水真多18精品| 久久国际精品| 成人国产精品| 婷婷激情综合| 免费观看在线色综合| 最新国产精品视频| 国产精品成人**免费视频| 国内一区二区三区| japanese国产精品| 日本vs亚洲vs韩国一区三区二区| 午夜性色一区二区三区免费视频| 日本不卡不码高清免费观看| 国产精品探花在线观看| 97在线精品| 六月婷婷一区| 国产日韩亚洲| 亚洲黄色中文字幕| 蜜桃91丨九色丨蝌蚪91桃色| 国产精品一区亚洲| 久久精品卡一| 青青国产91久久久久久| 国产白浆在线免费观看| 亚洲自拍另类| 国语对白精品一区二区| 99国内精品| 欧美日韩亚洲一区二区三区在线| av中文字幕在线观看第一页| 亚洲二区三区不卡| 国产精品久一| 午夜精品网站| 国内精品亚洲| 亚洲精品一级| 99久久激情| 你懂的网址国产 欧美| 99成人在线| 精品捆绑调教一区二区三区| 日本中文字幕视频一区| 国产精品av久久久久久麻豆网| 国产欧美日韩视频在线| 国产亚洲在线观看| 丁香婷婷久久| 日本午夜精品久久久| 国产精品人人爽人人做我的可爱| 国产乱人伦丫前精品视频| 老鸭窝毛片一区二区三区| 成人久久一区| 91亚洲自偷观看高清| 国产精品一区三区在线观看| 视频一区在线播放| 亚洲国产一区二区三区在线播放| 国产96在线亚洲| 欧美黑人做爰爽爽爽| 亚洲精品影院在线观看| 日韩一级网站| 欧美大黑bbbbbbbbb在线| 国产a久久精品一区二区三区| 国产精品最新| 国产另类在线| 国产欧美日韩综合一区在线播放| 亚洲精选久久| 亚洲一区导航| 亚洲精品系列| 日本vs亚洲vs韩国一区三区二区| 丝袜亚洲精品中文字幕一区| 在线一区视频| 中文字幕亚洲精品乱码| 亚洲精品一二三**| 欧美日韩1区2区3区| 免费日韩成人| 亚洲深夜视频| 丝袜av一区| 自由日本语亚洲人高潮| 男人的天堂久久精品| 日韩av一区二| 国际精品欧美精品| 久久久久久久久久久妇女| 欧美网站在线| 日本不卡在线视频| 大香伊人久久精品一区二区| 久久久久国产| 亚洲天堂免费| 久久亚洲精精品中文字幕| se01亚洲视频 | 精品国产亚洲日本| 高清av一区二区三区| 视频一区二区中文字幕| 欧美中文一区| 亚洲涩涩在线| 亚州av一区| 日韩深夜视频| 男人操女人的视频在线观看欧美| 国产激情欧美| 午夜电影一区| 久久久久久黄| av在线最新| 9久re热视频在线精品| а√在线中文在线新版| 六月丁香综合在线视频| 国产日韩欧美一区| 欧美天堂一区二区| 国产欧美自拍一区| 国产欧美一区二区色老头| 日本欧美久久久久免费播放网| 一本综合精品| 日韩一区二区三区精品| 日本亚洲视频在线| 亚洲男人在线| 97久久精品| 精品国产一区二区三区2021| 卡一卡二国产精品| 麻豆精品蜜桃视频网站| 美腿丝袜亚洲三区| 久久精品国产亚洲aⅴ| 麻豆精品视频在线观看免费| 日本成人手机在线| 91精品尤物| 国产精品va| 精品无人区麻豆乱码久久久 | 99视频精品| 国产视频久久| 久热精品在线| 国产精一区二区| 国产午夜久久av| 久久99久久久精品欧美| 91亚洲人成网污www| 91精品一区国产高清在线gif | 蜜桃传媒麻豆第一区在线观看| 中文字幕日韩亚洲| 久久99蜜桃| 欧美日韩精品一区二区视频| 一区久久精品| 国产精品亚洲综合色区韩国| 美女av在线免费看| 久久亚洲色图| 卡一精品卡二卡三网站乱码| 99免费精品| 日日夜夜免费精品| 国内自拍视频一区二区三区| 99视频精品全部免费在线视频| 日韩一区二区三区免费视频| 国产高清不卡|