国产99福利精品视频|杨幂精品国产福利在线|国精品午夜福利视频不卡|欧美精品黄网站在线播放|精品国产乱码久久久久久久|国产大片中文字幕在线观看|国产肥熟女视频一区二区三区|国产乱码无码视频一区二区三区

八一八Java的內(nèi)部類,你知道多少?

來源:北大青鳥飛迅校區(qū)|發(fā)布時間:2013-04-26 17:45:19

  Java內(nèi)部類問題,在這給大家分享一下。 在說之前,我先列出幾個問題:

  1.外部類(非主類)通過怎樣的方式訪問內(nèi)部類?

  2.內(nèi)部類能不能訪問主類私有的屬性,為什么?

  3.內(nèi)部類能不能繼承別的類和接口?

  4.內(nèi)部類能不能是static的?

  5.在主類的方法里面可不可以定義內(nèi)部類?

  6.初始化主類的時候是不是也把內(nèi)部類給初始化了?為什么?

  7.怎樣寫一個匿名的內(nèi)部類?

  我目前想到的就這些,在我給大家陳述之前,希望大家好好想想,再往下看:

  第一個問題:外部類是怎樣引用內(nèi)部類的?這個問題,我想,可能有的人就會這樣寫:

  這是內(nèi)部類:InnerClass.

  1publicclassMainClass {

  2

  3 publicclassInnerClass{

  4 publicString name="name";

  5

  6 publicString getName() {

  7 returnname;

  8 }

  9

  10 publicvoidsetName(String name) {

  11 this.name=name;

  12 }

  13 }

  14}

  以下是引用:

  1publicclassCheckClass {

  2 publicstaticvoidmain(String[] args) {

  3 InnerClass innerClass=newInnerClass();

  4 System.out.println(innerClass.getName());

  5 }

  6}

  如果這樣寫的話,會報編譯錯誤。那么為什么會報錯呢?因為在Java的設(shè)計中,如果想訪問一個類的內(nèi)部類,你必須通過宿主類去取它,然后,再對它進(jìn)行操作,Java就是想這樣把內(nèi)部類給封閉起來的,好吧,正確的寫法,我給大家貼出來:

  以下是內(nèi)部類的寫法:

  1publicclassMainClass {

  2 publicInnerClass getInnerClass() {

  3 returnnewInnerClass();

  4 }

  5

  6 publicclassInnerClass {

  7 publicString name="name";

  8

  9 publicString getName() {

  10 returnname;

  11 }

  12

  13 publicvoidsetName(String name) {

  14 this.name=name;

  15 }

  16 }

  17}

  如果你想訪問Java內(nèi)部類,你必須先拿到它的宿主類,這樣你才能對內(nèi)部類進(jìn)行操作:

  1 public class CheckClass {

  2 public static void main(String[] args) {

  3 MainClass mainClass = new MainClass();

  4 System.out.println(mainClass.getInnerClass().getName());

  5 }

  6 }

  這樣的話,編譯就不會報錯了。

  好了,該回答第二個問題了,就是內(nèi)部類能不能訪問宿主類的私有屬性?回答是可以的。如果,你會看JVM的源碼的話,你就會看到,在編譯內(nèi)部類調(diào)用主類私有變量時,會把它們轉(zhuǎn)換成一種特殊的符號,JVM會把這種符號解析成公有的,然后讓內(nèi)部類調(diào)用。代碼很簡單,我就不貼了。

上一篇:內(nèi)部類學(xué)習(xí):Java接口與抽象類的區(qū)別?
下一篇:怎樣制作Javascript彈出窗口?

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學(xué)校地址: 長沙市天心區(qū)團結(jié)路6號

Copyright © 2006 | 湖南大計信息科技有限公司 版權(quán)所有

湘ICP備14017520號-3

關(guān)注我們
在線咨詢
嘿,我來幫您!