精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

詳細介紹java中的內部類

開發 后端
本文介紹的是java中的內部類,從靜態內部類,局部內部類等方面為大家介紹的。希望對你有幫助,一起來看。

提起Java內部類(Inner Class)可能很多人不太熟悉,實際上類似的概念在C++里也有,那就是嵌套類(Nested Class),關于這兩者的區別與聯系,在下文中會有對比。內部類從表面上看,就是在類中又定義了一個類(下文會看到,內部類可以在很多地方定義),而實際上并沒有那么簡單,乍看上去內部類似乎有些多余,它的用處對于初學者來說可能并不是那么顯著,但是隨著對它的深入了解,你會發現Java的設計者在內部類身上的確是用心良苦。學會使用內部類,是掌握Java高級編程的一部分,它可以讓你更優雅地設計你的程序結構。下面從以下幾個方面來介紹:

  1. public interface Contents {  
  2. int value();  
  3. }  
  4. public interface Destination {  
  5. String readLabel();  
  6. }  
  7. public class Goods {  
  8. private class Content implements Contents {  
  9. private int i = 11;  
  10. public int value() {  
  11. return i;  
  12. }  
  13. }  
  14. protected class GDestination implements Destination {  
  15. private String label;  
  16. private GDestination(String whereTo) {  
  17. label = whereTo;  
  18. }  
  19. public String readLabel() {  
  20. return label;  
  21. }  
  22. }  
  23. public Destination dest(String s) {  
  24. return new GDestination(s);  
  25. }  
  26. public Contents cont() {  
  27. return new Content();  
  28. }  
  29. }  
  30. class TestGoods {  
  31. public static void main(String[] args) {  
  32. Goods p = new Goods();  
  33. Contents c = p.cont();  
  34. Destination d = p.dest("Beijing");  
  35. }  

在這個例子里類Content和GDestination被定義在了類Goods內部,并且分別有著protected和private修飾符來控制訪問級別。Content代表著Goods的內容,而GDestination代表著Goods的目的地。它們分別實現了兩個接口Content和Destination。在后面的main方法里,直接用 Contents c和Destination d進行操作,你甚至連這兩個內部類的名字都沒有看見!這樣,內部類的第一個好處就體現出來了??隱藏你不想讓別人知道的操作,也即封裝性。

同時,我們也發現了在外部類作用范圍之外得到內部類對象的第一個方法,那就是利用其外部類的方法創建并返回。上例中的cont()和dest()方法就是這么做的。那么還有沒有別的方法呢?當然有,其語法格式如下:

  1. outerObject=new outerClass(Constructor Parameters);  
  2. outerClass.innerClass innerObject=outerObject.new InnerClass(Constructor Parameters); 

注意在創建非靜態內部類對象時,一定要先創建起相應的外部類對象。至于原因,也就引出了我們下一個話題??非靜態內部類對象有著指向其外部類對象的引用,對剛才的例子稍作修改:

  1. public class Goods {  
  2. private valueRate=2;  
  3. private class Content implements Contents {  
  4. private int i = 11*valueRate;  
  5. public int value() {  
  6. return i;  
  7. }  
  8. }  
  9. protected class GDestination implements Destination {  
  10. private String label;  
  11. private GDestination(String whereTo) {  
  12. label = whereTo;  
  13. }  
  14. public String readLabel() {  
  15. return label;  
  16. }  
  17. }  
  18. public Destination dest(String s) {  
  19. return new GDestination(s);  
  20. }  
  21. public Contents cont() {  
  22. return new Content();  
  23. }  

修改的部分用藍色顯示了。在這里我們給Goods類增加了一個private成員變量valueRate,意義是貨物的價值系數,在內部類Content的方法value()計算價值時把它乘上。我們發現,value()可以訪問valueRate,這也是內部類的第二個好處??一個內部類對象可以訪問創建它的外部類對象的內容,甚至包括私有變量!這是一個非常有用的特性,為我們在設計時提供了更多的思路和捷徑。要想實現這個功能,內部類對象就必須有指向外部類對象的引用。Java編譯器在創建內部類對象時,隱式的把其外部類對象的引用也傳了進去并一直保存著。這樣就使得內部類對象始終可以訪問其外部類對象,同時這也是為什么在外部類作用范圍之外向要創建內部類對象必須先創建其外部類對象的原因。

有人會問,如果內部類里的一個成員變量與外部類的一個成員變量同名,也即外部類的同名成員變量被屏蔽了,怎么辦?沒事,Java里用如下格式表達外部類的引用:

  1. outerClass.this 

有了它,我們就不怕這種屏蔽的情況了。

靜態內部類

和普通的類一樣,內部類也可以有靜態的。不過和非靜態內部類相比,區別就在于靜態內部類沒有了指向外部的引用。這實際上和C++中的嵌套類很相像了,Java內部類與C++嵌套類最大的不同就在于是否有指向外部的引用這一點上,當然從設計的角度以及以它一些細節來講還有區別。

除此之外,在任何非靜態內部類中,都不能有靜態數據,靜態方法或者又一個靜態內部類(內部類的嵌套可以不止一層)。不過靜態內部類中卻可以擁有這一切。這也算是兩者的第二個區別吧。

局部內部類

是的,Java內部類也可以是局部的,它可以定義在一個方法甚至一個代碼塊之內。

  1. public class Goods1 {  
  2. public Destination dest(String s) {  
  3. class GDestination implements Destination {ng label;   
  4. private GDestination(String whereTo) {  
  5. label = whereTo;  
  6. }  
  7. public String readLabel() { return label; }  
  8. }  
  9. return new GDestination(s);  
  10. }  
  11. public static void main(String[] args) {  
  12. Goods1 g= new Goods1();  
  13. Destination d = g.dest("Beijing");  
  14. }  

上面就是這樣一個例子。在方法dest中我們定義了一個內部類,最后由這個方法返回這個內部類的對象。如果我們在用一個內部類的時候僅需要創建它的一個對象并創給外部,就可以這樣做。當然,定義在方法中的內部類可以使設計多樣化,用途絕不僅僅在這一點。

下面有一個更怪的例子:

  1. public class Goods2{  
  2. private void internalTracking(boolean b) {  
  3. if(b) {  
  4. class TrackingSlip {  
  5. private String id;  
  6. TrackingSlip(String s) {  
  7. id = s;  
  8. }  
  9. String getSlip() { return id; }  
  10. }  
  11. TrackingSlip ts = new TrackingSlip("slip");  
  12. String s = ts.getSlip();  
  13. }  
  14. }  
  15. public void track() { internalTracking(true); }  
  16. public static void main(String[] args) {  
  17. Goods2 g= new Goods2();  
  18. g.track();  
  19. }  

你不能在if之外創建這個內部類的對象,因為這已經超出了它的作用域。不過在編譯的時候,內部類TrackingSlip和其他類一樣同時被編譯,只不過它由它自己的作用域,超出了這個范圍就無效,除此之外它和其他內部類并沒有區別。

匿名內部類

java的匿名內部類的語法規則看上去有些古怪,不過如同匿名數組一樣,當你只需要創建一個類的對象而且用不上它的名字時,使用內部類可以使代碼看上去簡潔清楚。它的語法規則是這樣的:

  1. new interfacename(){......};   
  2. 或   
  3. new superclassname(){......}; 

下面接著前面繼續舉例子:

  1. public class Goods3 {  
  2. public Contents cont(){  
  3. return new Contents(){  
  4. private int i = 11;  
  5. public int value() {  
  6. return i;  
  7. }  
  8. };  
  9. }  

這里方法cont()使用匿名內部類直接返回了一個實現了接口Contents的類的對象,看上去的確十分簡潔。

在java的事件處理的匿名適配器中,匿名內部類被大量的使用。例如在想關閉窗口時加上這樣一句代碼:

  1. frame.addWindowListener(new WindowAdapter(){  
  2. public void windowClosing(WindowEvent e){  
  3. System.exit(0);  
  4. }  
  5. }); 

有一點需要注意的是,匿名內部類由于沒有名字,所以它沒有構造函數(但是如果這個匿名內部類繼承了一個只含有帶參數構造函數的父類,創建它的時候必須帶上這些參數,并在實現的過程中使用super關鍵字調用相應的內容)。如果你想要初始化它的成員變量,有下面幾種方法:

如果是在一個方法的匿名內部類,可以利用這個方法傳進你想要的參數,不過記住,這些參數必須被聲明為final。

將匿名內部類改造成有名字的局部內部類,這樣它就可以擁有構造函數了。

在這個匿名內部類中使用初始化代碼塊。

為什么需要內部類?

java內部類有什么好處?為什么需要內部類?

首先舉一個簡單的例子,如果你想實現一個接口,但是這個接口中的一個方法和你構想的這個類中的一個方法的名稱,參數相同,你應該怎么辦?這時候,你可以建一個內部類實現這個接口。由于內部類對外部類的所有內容都是可訪問的,所以這樣做可以完成所有你直接實現這個接口的功能。

不過你可能要質疑,更改一下方法的不就行了嗎?

的確,以此作為設計內部類的理由,實在沒有說服力。

真正的原因是這樣的,java中的內部類和接口加在一起,可以的解決常被C++程序員抱怨java中存在的一個問題??沒有多繼承。實際上,C++的多繼承設計起來很復雜,而java通過內部類加上接口,可以很好的實現多繼承的效果。

 

責任編輯:于鐵 來源: 互聯網
相關推薦

2009-06-11 13:08:29

Java內部類Java編程思想

2020-01-15 11:14:21

Java算法排序

2020-12-14 10:23:23

Java內部類外部類

2010-02-05 15:32:33

Java內部類

2011-03-29 14:11:15

內部類

2023-10-19 13:24:00

Java工具

2011-07-11 11:02:12

JAVA集合框架

2011-07-11 15:02:54

枚舉

2023-03-06 07:53:36

JavaN種內部類

2015-12-08 09:05:41

Java內部類

2009-07-29 09:18:49

Java內部類

2011-07-22 16:50:05

JAVA

2011-07-04 10:32:37

JAVA

2010-03-18 15:47:07

Java創建線程

2011-06-08 15:45:41

字符串JAVA

2010-08-26 10:41:45

C#內部類

2011-07-08 16:54:39

JspCookies

2011-06-21 14:25:44

JavaScriptcookie

2019-12-23 14:32:38

Java內部類代碼

2011-07-21 17:02:48

JAVA模式框架
點贊
收藏

51CTO技術棧公眾號

国产精品久久久久精| 久久av一区二区三| 你懂的在线观看视频网站| 午夜一级在线看亚洲| 91精品视频免费看| 特黄一区二区三区| 精品国产亚洲一区二区三区在线 | 欧美黄色免费| 国产激情视频一区二区三区欧美 | 先锋资源久久| 亚洲精品一区二区三区福利| 免费观看成人在线视频| 国产在线激情| 久久久久久免费网| 999热视频| 日本三级一区二区三区| 亚洲国产精品一区| 日韩三级成人av网| 加勒比一区二区| 在线日韩成人| 欧美日韩在线精品一区二区三区激情 | 国产欧美第一页| 噜噜噜91成人网| 欧美大奶子在线| 国产欧美一区二区三区在线观看视频| 91久久精品无嫩草影院| 欧美日韩一区二区在线观看视频| 国产a级片网站| 国产激情视频在线| 亚洲国产精品ⅴa在线观看| 国产一区二区三区高清视频| 国产尤物视频在线观看| 日韩电影一区二区三区四区| 97视频国产在线| 日本少妇高清视频| 成人在线免费观看网站| 亚洲一区av在线播放| 在线观看国产三级| 超碰成人在线免费| 日韩精品一区二区三区视频在线观看| 亚洲天堂av线| 亚洲第一会所001| 一本久久综合亚洲鲁鲁五月天| 久久久久久免费看| 青草青在线视频| 亚洲免费av观看| 中文字幕一区二区三区四区五区六区| 国产51人人成人人人人爽色哟哟| 2021中文字幕一区亚洲| 国内精品久久久久久久果冻传媒| 国产欧美综合视频| 久久99精品久久久| 成人黄色片在线| 国产精品探花视频| 精品一区二区三区在线播放| 国产精品中文久久久久久久| 中文区中文字幕免费看| 蜜桃在线一区二区三区| 国产区精品视频| 国产精品久久久久久久久毛片| 久久电影国产免费久久电影| 国产欧美日韩中文字幕| 国产又粗又猛又色又| 九九**精品视频免费播放| 国产日韩欧美影视| 国内精品久久久久久久久久久| 国产在线一区观看| 91成人免费观看| 欧美一区二区三区黄片 | 成人精品999| 欧美亚洲国产激情| xxx一区二区| 破处女黄色一级片| 亚洲少妇在线| 国产精品免费久久久久影院| 亚洲天堂自拍偷拍| 国产麻豆成人传媒免费观看| 国产精品国产三级国产专区53| 欧美熟妇另类久久久久久不卡| 26uuu亚洲| 日韩在线三级| 亚洲制服国产| 精品日韩美女的视频高清| 国产精品无码一本二本三本色| 欧美一区二区三区婷婷| 欧美va在线播放| asian性开放少妇pics| 成人直播大秀| 欧美国产日产韩国视频| 一级片视频在线观看| 免费在线观看日韩欧美| www.久久爱.cn| 麻豆影视在线| 亚洲男帅同性gay1069| 国产免费观看高清视频| 青草综合视频| 日韩av在线网站| 中文字幕在线观看2018| 亚洲免费黄色| 成人两性免费视频| 亚洲欧美日本在线观看| 最新中文字幕一区二区三区| 欧美日韩一道本| 日韩一区二区三区四区五区| 亚洲精品999| 久久久久亚洲av片无码| 亚洲在线一区| 亚洲淫片在线视频| 国产精品一二三区视频| 亚洲高清在线精品| 在线观看免费不卡av| 欧美日韩夜夜| 欧美日本啪啪无遮挡网站| 中文字幕人妻丝袜乱一区三区| 丁香天五香天堂综合| 艳色歌舞团一区二区三区| 五月天av在线| 亚洲第一男人av| 日韩欧美123区| 麻豆成人久久精品二区三区小说| 免费一区二区三区在在线视频| 国产黄网站在线观看| 日本道在线观看一区二区| 亚洲少妇18p| 国产一区亚洲| 91精品国产综合久久久久久丝袜 | 天天综合网在线| 亚洲欧美aⅴ...| 小泽玛利亚视频在线观看| 亚洲精品3区| 97在线看福利| 手机在线观看免费av| 亚洲自拍与偷拍| 欧美又黄又嫩大片a级| 日韩一区二区在线免费| 国产成人精品av| 日韩欧美在线番号| 姬川优奈aav一区二区| 成人啪啪18免费游戏链接| 欧美69wwwcom| 亚洲一区亚洲二区亚洲三区| av网址在线看| 欧美一级生活片| 加勒比婷婷色综合久久| 国产一区在线看| 四虎精品欧美一区二区免费| 亚洲综合资源| 久久精品中文字幕电影| 国产精品久久久久久免费| 中文字幕字幕中文在线中不卡视频| 丝袜制服一区二区三区| 91精品国产乱码久久久久久久久 | 久久精品99无色码中文字幕| 韩国av中文字幕| 91小视频在线免费看| 久久精品视频16| 精品在线观看入口| 庆余年2免费日韩剧观看大牛| 国产精品久久久久久久岛一牛影视| 一区二区三区视频| 99久久er| www国产精品com| 国产精品久久久国产盗摄| 伊人久久大香线蕉综合网站 | 伊人影院蕉久影院在线播放| 欧美精品亚洲二区| 欧美色图亚洲天堂| 成人视屏免费看| www亚洲一区| 97久久伊人激情网| 黑人精品一区二区三区| 一区二区免费看| 800av在线播放| 欧美综合国产| 日韩理论片在线观看| 成人a在线观看高清电影| 色多多国产成人永久免费网站 | 国产天堂视频在线观看| 自拍偷自拍亚洲精品被多人伦好爽 | 波多野结衣在线一区二区| 久久久久久香蕉网| 欧美在线一区视频| 亚洲精品无吗| 国产免费亚洲高清| 最新国产在线拍揄自揄视频| 亚洲国产精品久久91精品| 久久久精品毛片| 亚洲另类中文字| 国产伦精品一区二区三区妓女| 日本伊人精品一区二区三区观看方式| 在线观看日韩羞羞视频| 久久aimee| 国产精品人成电影| h片在线观看| 中文字幕在线国产精品| 欧美视频久久久| 欧美日韩日日骚| 日本免费观看视| 国产精品成人网| 国产精品1000部啪视频| 国产乱对白刺激视频不卡| 各处沟厕大尺度偷拍女厕嘘嘘| 99精品视频精品精品视频| 久久99精品久久久久久久青青日本| 成人免费黄色| 97香蕉超级碰碰久久免费的优势| 日本a在线播放| 亚洲欧美在线免费观看| 精品国产亚洲一区二区麻豆| 在线观看网站黄不卡| 精品一级少妇久久久久久久| 国产精品久久久久一区| v8888av| 成人午夜av影视| 天天综合网久久| 久久一区二区三区超碰国产精品| 精品视频在线观看一区二区| 成人看的视频| 欧美二区三区在线| 国产精品超碰| 亚洲在线观看视频网站| 老司机精品视频网| 国产精品av在线| 这里有精品可以观看| 久久久这里只有精品视频| av免费在线观看网站| 中文字幕精品久久| 好男人免费精品视频| 日韩精品一二三四区| 欧美另类高清视频在线| 国产精品免费精品自在线观看| 日韩免费黄色av| 亚洲日本天堂| 国产69久久精品成人| 欧美野外wwwxxx| 欧美黑人xxxⅹ高潮交| 超碰在线观看免费| 粗暴蹂躏中文一区二区三区| 婷婷免费在线视频| 色综合亚洲精品激情狠狠| 激情福利在线| 亚洲色图50p| 久久米奇亚洲| 亚洲天堂网站在线观看视频| 暖暖视频在线免费观看| 日韩精品免费观看| 青青草在线视频免费观看| 日韩国产中文字幕| 欧美91精品久久久久国产性生爱| 日韩av中文字幕在线| 污视频在线免费观看| 亚洲黄页视频免费观看| 亚州精品国产精品乱码不99按摩| 亚洲第一色中文字幕| 五月天丁香视频| 亚洲免费电影在线观看| 国产黄色在线| 日韩在线高清视频| gogogogo高清视频在线| 欧美激情xxxx性bbbb| 手机在线观看av| 热99精品只有里视频精品| 国产精品高清乱码在线观看| 国产精品亚发布| 日韩黄色av| 国产日产精品一区二区三区四区| 青青视频一区二区| 青青草原成人| 久久久久国产精品| 久操手机在线视频| 亚洲欧美日本日韩| 91激情视频在线| 国产综合一区二区| 中文字幕在线国产| 久久久久久电影| 亚洲AV成人无码网站天堂久久| 一区二区三区在线观看欧美 | 三级做a全过程在线观看| 亚洲欧美一区二区三区久久| 色的视频在线免费看| 欧美风情在线观看| 欧美黑人疯狂性受xxxxx野外| 国产综合在线观看视频| 伊人久久影院| 色噜噜狠狠一区二区三区| 91精品国产福利在线观看麻豆| 亚洲一级二级三级| 成年人网站国产| 国产精品亚洲欧美| 精品久久久久久中文字幕2017| 九九久久精品视频| 国产真实乱人偷精品| 久久久久久一二三区| 澳门黄色一级片| 日韩欧美在线播放| 99国产成人精品| 亚洲欧美精品中文字幕在线| free性欧美hd另类精品| 国产aaa精品| 一区二区三区四区高清视频| 亚洲草草视频| 亚洲毛片在线| 天天操天天干天天做| 91在线看国产| 国模无码国产精品视频| 色综合天天综合色综合av| av av片在线看| 综合激情国产一区| 蜜桃视频在线观看播放| 亚洲在线观看视频网站| gogogo高清在线观看一区二区| 999久久欧美人妻一区二区| 秋霞午夜鲁丝一区二区老狼| 奇米777第四色| 亚洲三级视频在线观看| 国产午夜无码视频在线观看 | 亚洲最大综合网| 久久亚洲一级片| 国产在线观看免费av| 日韩视频中午一区| 91精品大全| 国产成人啪精品视频免费网| 国产精品玖玖玖在线资源| avove在线观看| 久久99日本精品| 亚洲黄色免费视频| 欧美丝袜一区二区三区| 色婷婷av一区二区三区之红樱桃| 久久成人这里只有精品| 电影在线观看一区二区| 欧美极品日韩| 美女精品网站| 中文字幕丰满孑伦无码专区| 精品成人av一区| 深夜福利在线看| 91精品国产99久久久久久| 北条麻妃在线一区二区免费播放| 欧洲精品视频在线| 国产一区二区日韩精品| 99热99这里只有精品| 欧美日韩在线直播| 五月香视频在线观看| 国产一区二区在线免费| 欧美3p在线观看| 成人亚洲免费视频| 亚洲欧美日韩国产手机在线| 国产理论视频在线观看| 久久电影一区二区| 天堂av一区| 婷婷五月综合缴情在线视频| 99久久免费精品| 亚洲 欧美 中文字幕| 亚洲视频在线视频| 丁香婷婷久久| 中文字幕在线亚洲精品| 国产精品中文字幕欧美| 欧美卡一卡二卡三| 精品国产一二三| 欧美激情护士| 日本一区美女| 精品一区二区三区免费视频| 紧身裙女教师波多野结衣| 日韩欧美一级特黄在线播放| 草美女在线观看| 欧美精品尤物在线| 秋霞午夜鲁丝一区二区老狼| 免费三级在线观看| 亚洲成人亚洲激情| 欧美一区 二区 三区| 亚洲三区在线| 粉嫩嫩av羞羞动漫久久久 | 激情婷婷久久| 九色porny自拍视频| 欧美日韩一卡二卡| 性国产高清在线观看| 久久av一区二区三区漫画| 男人的天堂久久精品| 2018天天弄| 国产午夜精品一区理论片飘花| 爱情电影网av一区二区| 免费一级淫片aaa片毛片a级| 久久亚洲综合色一区二区三区 | 国产精品vvv| 亚洲激情一区二区| 国产成人小视频| 欧美一区二区三区久久久| 久久久999国产精品| 久久精品国产亚洲5555| 亚洲综合色在线观看| 亚洲一区二区在线观看视频| 久久精品a一级国产免视看成人| 国产欧美婷婷中文| 99综合精品| 99成人在线观看| 国产午夜精品麻豆| 麻豆一区在线| 欧美大尺度做爰床戏| 亚洲成人精品一区二区| 精品美女在线观看视频在线观看| 精品无人区一区二区三区|