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

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

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

    敬的世界

    常用鏈接

    統計

    最新評論

    嵌套類和內部類

    ?來自: http://www.tkk7.com/lincode/archive/2008/08/13/221594.html

    一 概念:

    Java將嵌套類分成兩個主要的分類:靜態嵌套類(static nested classes)和內部類(inner classes)。

    1 嵌套類(nested classes),在一個類內部定義的另一個類,稱為嵌套類。
    ? 嵌套類分為兩種, static 修飾的 靜態嵌套類, 和無 static 修飾的 非靜態嵌套類,也叫作 內部類。

    2 內部類(inner classes), 無 static 修飾的 非靜態嵌套類。

    Java還進一步將內部類分為:

    實例內部類(instance inner class) ,假設在聲明嵌套類時,沒有在前面加上static關鍵字。這樣得到的是個實例內部類。靜態嵌套類只能夠訪問外部類的static成員,而實例內部類能夠同時訪問static和實例成員。

    本地內部類(local inner class),Java允許在任意的代碼段中放入一個類,該類的代碼放在一對大括號中{? }。這意味著類能夠出現在一個方法中,甚至是在if語句的一對括號中。這樣的類就稱為本地內部類。相對于實例內部類來說,本地內部類和有一個好處。他除了能夠訪問外部類的實例和類字段外(稱為實例和類方法),還能夠訪問本地變量和方法的參數。

    匿名內部類(and anonymous inner class),沒有給出類名的內部類為匿名內部類。

    二 使用:

    1. 訪問內部類:

    我們可以在嵌套類(包括靜態的和非靜態的 )前加上 private,protected 或 public 關鍵字,以指示該類在外部類以外的訪問級別。

    具體訪問方法如下:
    (1).內部類,要以如下形式訪問, outclass 是 OutClass 的一個實例,它放在 new 前指示內部類的實例是屬于一個特定的外部類的實例的。 這是因為,只有外部類的實例存在,他的實例內部類( 也就是非靜態內部類)才能存在。

    ?? //
    innerclass
    ? OutClass?outclass? = ? new
    ?OutClass();
    ?

    ??OutClass.InnerClass?innerclass? = ?outclass. new ?InnerClass();
    ??innerclass.normalMethod();


    (2).靜態嵌套類, 可以用 OutClass.StaticInnerClass 來指示。
    靜態嵌套類,可以有實例成員(實例方法 和 實例變量)
    訪問靜態嵌套類的實例域,需要先實例化靜態嵌套類。
    這個類是靜態的,它不依賴于它外部類的某個實例,所以無須先實例化外部類。這和內部類是不一樣的。

    ? OutClass.StaticInnerClass?staticinnerclass?=?new
    ?OutClass.StaticInnerClass();
    ??staticinnerclass.normalMethod();


    (3).靜態嵌套類的靜態方法,可以用 OutClass.StaticInnerClass.staticMethod() 來訪問。

    實例代碼:
    // ?OutClass.java
    public ? class ?OutClass?{

    ????
    // non static inner classes

    ???? class ?InnerClass{
    ????
    ????????
    public ? void
    ?normalMethod(){
    ????????????System.out.println(
    " ?success: non-static innerclass "
    );
    ????????}
    ????}
    ????
    ????
    // static inner classes

    ???? static ? class ?StaticInnerClass
    ????{
    ????????
    // non?static?method of static inner classes

    ???????? public ? void ?normalMethod()
    ????????{
    ????????????System.out.println(
    " ?success:?non?static?method of?static?innerclas "
    );
    ????????}
    ????????
    ????????
    // ?static?methode?of static inner classes

    ???????? static ? public ? void ?staticMethod()
    ????????{
    ????????????System.out.println(
    " ?success:?static?method of?static?innerclass "
    );
    ????????}
    ????}
    }
    // end of InnerClass

    // ?Test.java
    public ? class ?Test?{

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

    ??OutClass?outclass?
    = ? new
    ?OutClass();
    ??
    ??
    // ?innerclass

    ??OutClass.InnerClass?innerclass? = ?outclass. new ?InnerClass();
    ??innerclass.normalMethod();
    ??
    ??
    // ?non?static?method of?static?innerclas

    ??OutClass.StaticInnerClass?staticinnerclass? = ? new ?OutClass.StaticInnerClass();
    ??staticinnerclass.normalMethod();

    ??
    // ?static?method of?static?innerclass

    ??OutClass.StaticInnerClass.staticMethod();?
    ??}
    }
    //
    end of Test

    2. 嵌套類 訪問 外部類的成員:

    (1). 外部類對于內部類(非靜態嵌套類)是透明的。包括外部類的private成員,其內部類都可以自由訪問。

    (2). 一個靜態嵌套類只能訪問外部類的靜態方法,它是不能訪問任何外部類的實例成員(包括變量和方法)。

    (3). 內部類中的 this 是指內部類本身。內部類的成員和外部類的成員名沖突,內部類內,沖突的成員名是指內部類成員。
    要調用外部類的沖突的成員,要以 外部類的類名 指示:對于沖突的變量 OutClass.conflitName? 對于沖突的方法 OutClass.conflitName()。

    posted on 2009-10-14 23:26 picture talk 閱讀(280) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 亚洲午夜免费视频| 久久国产精品免费一区二区三区| 57pao国产成视频免费播放| 人人狠狠综合久久亚洲婷婷| yellow视频免费看| 国产亚洲精aa成人网站| 香蕉免费在线视频| 亚洲AV永久无码区成人网站| 一级成人a毛片免费播放| 亚洲白色白色永久观看| 91麻豆最新在线人成免费观看| 亚洲av无码一区二区三区观看| 一个人免费观看www视频在线| 亚洲性无码AV中文字幕| 全部免费国产潢色一级| 羞羞视频免费网站日本| 久久亚洲国产中v天仙www| 91精品国产免费| 国产成人精品日本亚洲专一区| 午夜爱爱免费视频| 亚美影视免费在线观看| 亚洲成av人片天堂网| 国产精品久久久久久久久免费| 亚洲国产午夜精品理论片在线播放 | 中文字幕免费在线视频| 久久青草亚洲AV无码麻豆| 57PAO成人国产永久免费视频| 亚洲色偷偷综合亚洲av78| 亚洲无码视频在线| 亚洲黄色免费电影| 日韩欧美亚洲国产精品字幕久久久 | 亚洲精品在线不卡| 在线观看91精品国产不卡免费| 有码人妻在线免费看片| 亚洲精品韩国美女在线| 国产无遮挡吃胸膜奶免费看视频 | 国产成人无码免费网站| 亚洲精品成人久久| 亚洲Av无码乱码在线观看性色| 青青草原1769久久免费播放| 伊人久久五月丁香综合中文亚洲 |