<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Flyingis

    Talking and thinking freely !
    Flying in the world of GIS !
    隨筆 - 156, 文章 - 16, 評論 - 589, 引用 - 0
    數(shù)據(jù)加載中……

    理解Java內(nèi)部類的基本特性(二)

    作者:Flyingis

    4. 
    內(nèi)部類擁有其外圍類的所有元素的訪問權(quán),當(dāng)某個外圍類的對象創(chuàng)建了一個內(nèi)部類對象時,此內(nèi)部類對象必定會保存一個指向那個外圍類對象的引用。然后,在訪問此外圍類的成員時,就是用那個“隱藏”的引用來選擇外圍類的成員。這與C++嵌套類的設(shè)計非常不同,在C++中只是單純的名字隱藏機(jī)制,與外圍對象沒有聯(lián)系,也沒有隱含的訪問權(quán)。

             另外,一個內(nèi)部類被嵌套多少層并不重要,它能透明訪問所有它所嵌入的外圍類的所有成員。

    5.  Java中實現(xiàn)C++的嵌套類功能也是通過嵌套類的機(jī)制來實現(xiàn)的,區(qū)別是C++中的嵌套類不能訪問私有成員,在Java中則可以。

             Java中,使用嵌套類可以使得內(nèi)部類對象與其外圍類對象之間有聯(lián)系,語法上是將內(nèi)部類聲明為static。而在普通的內(nèi)部類中是不能有static數(shù)據(jù)、static字段和嵌套類的。通常,我們可以在一個普通的內(nèi)部類中,通過一個特殊的this引用鏈接到其外圍類對象,如外圍類是Fruit,那么在內(nèi)部類中應(yīng)該通過Fruit.this來引用外圍類的對象。

    6.  內(nèi)部類的繼承比較特殊,我通過一個例子來向大家展示:

    class Fruit {

      class Inner {}

    }

    public class Apple extends Fruit.Inner {

      Apple(Fruit f) {

        f.super(); //為什么要這樣使用我也不明白

    }

    public static void main(String[] args) {

      Fruit f = new Fruit();

      Apple a = new Apple(f);

    }

    }

             其中為什么要外圍類調(diào)用super()方法我也不清楚,希望有人指點!

    7.  當(dāng)繼承某個外圍類的時候,內(nèi)部類并沒有發(fā)生任何改變,基類和繼承類中的兩個內(nèi)部類是完全獨(dú)立的實體,各自在自己的命名空間內(nèi)。如果明確繼承某個內(nèi)部類,則會覆蓋原來的內(nèi)部類。如:

    public class A extends Atop {

      public Inner extends Atop.Inner {}

    }

    8.  局部內(nèi)部類和匿名內(nèi)部類在功能上基本相似,它們的區(qū)別在于,如果我們需要一個已命名的構(gòu)造器,或者需要重載構(gòu)造器,就要使用局部內(nèi)部類,它可以提供多個內(nèi)部類對象。匿名內(nèi)部類只能用于實例初始化。

    9.  內(nèi)部類標(biāo)識符是外圍類的名字+$+內(nèi)部類的名字,如果內(nèi)部類是匿名的,則會由編譯器產(chǎn)生一個數(shù)字作為其標(biāo)識符。

    posted on 2005-11-04 18:55 Flyingis 閱讀(1969) 評論(4)  編輯  收藏 所屬分類: JavaSE

    評論

    # re: 理解Java內(nèi)部類的基本特性(二)[原創(chuàng)]  回復(fù)  更多評論   

    其中為什么要外圍類調(diào)用super()方法?
    這個問題,think in java上有解釋,
    在第八章:接口和內(nèi)隱類 ——繼承inner classes
    你可以去看看
    2005-11-05 12:06 | allen

    # re: 理解Java內(nèi)部類的基本特性(二)[原創(chuàng)]  回復(fù)  更多評論   

    內(nèi)部類從運(yùn)行時理解更簡單:
    只要不是 static 聲明的內(nèi)部類運(yùn)行時,實例必定附著于一個外部類實例,而不能單獨(dú)創(chuàng)建。
    但是 static 內(nèi)部類的運(yùn)行時表現(xiàn)相同于外部類。
    2005-12-13 11:23 | 笨笨

    # re: 理解Java內(nèi)部類的基本特性(二)[原創(chuàng)]  回復(fù)  更多評論   

    文章中第六點我還是沒有弄明白。為什么一定要聲明調(diào)用基類的默認(rèn)構(gòu)造方法?
    2005-12-13 12:28 | Flyingis

    # re: 理解Java內(nèi)部類的基本特性(二)  回復(fù)  更多評論   

    不錯過西
    2005-12-30 17:32 | 南木林
    主站蜘蛛池模板: 亚洲国产精品久久久久秋霞小| 97免费人妻无码视频| 亚洲成a人在线看天堂无码| 国产精品亚洲一区二区麻豆| 亚洲成a人片毛片在线| a级男女仿爱免费视频| 午夜毛片不卡高清免费| 亚洲无成人网77777| 小日子的在线观看免费| 国产亚洲色婷婷久久99精品| 一区二区在线免费视频| 免费国产在线观看老王影院| 亚洲AV电影天堂男人的天堂| 香蕉高清免费永久在线视频| 亚洲综合偷自成人网第页色| 99无码人妻一区二区三区免费| 亚洲综合婷婷久久| 久章草在线精品视频免费观看| 亚洲精品无码久久久影院相关影片 | 精品无码一级毛片免费视频观看| 日韩精品电影一区亚洲| 亚洲国产成人综合| 精品久久8x国产免费观看| 久久水蜜桃亚洲av无码精品麻豆| 久久伊人免费视频| 亚洲av日韩av高潮潮喷无码| 永久免费av无码网站yy| 亚洲国产精品一区二区成人片国内| 中出五十路免费视频| 亚洲日韩中文无码久久| 你懂的免费在线观看| 国产成人无码综合亚洲日韩| APP在线免费观看视频| 亚洲av日韩av激情亚洲| 免费视频成人片在线观看| 久久亚洲AV成人无码国产| 亚洲免费黄色网址| 久久精品国产亚洲AV蜜臀色欲| 国产精品视频免费一区二区| 亚洲欧美乱色情图片| 免费人成网站在线观看10分钟|