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

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

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

    敬的世界

    常用鏈接

    統(tǒng)計

    最新評論

    嵌套類和內(nèi)部類

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

    一 概念:

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

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

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

    Java還進一步將內(nèi)部類分為:

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

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

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

    二 使用:

    1. 訪問內(nèi)部類:

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

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

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

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


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

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


    (3).靜態(tài)嵌套類的靜態(tài)方法,可以用 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). 外部類對于內(nèi)部類(非靜態(tài)嵌套類)是透明的。包括外部類的private成員,其內(nèi)部類都可以自由訪問。

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

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

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

    主站蜘蛛池模板: 日本成人免费在线| 国产免费人成视频在线播放播| 亚洲午夜国产精品无卡| 亚洲小视频在线观看| 亚洲高清视频在线观看| 亚洲Aⅴ无码专区在线观看q| 国产成人精品日本亚洲| 亚洲av福利无码无一区二区| 亚洲av片劲爆在线观看| 精品亚洲麻豆1区2区3区| 亚洲国产日韩在线成人蜜芽| 亚洲一级在线观看| 亚洲中文字幕久久精品无码VA| 激情综合亚洲色婷婷五月APP| 亚洲最大福利视频| 久久精品国产亚洲av瑜伽| 亚洲AV无码一区二区一二区| 麻豆69堂免费视频| 中文字幕高清免费不卡视频 | 国产亚洲精品看片在线观看| 亚洲三区在线观看无套内射| 亚洲一区无码中文字幕| 亚洲欧洲免费视频| 亚洲a∨无码男人的天堂| 亚洲欧美乱色情图片| 免费一级毛片在线播放视频免费观看永久| 黄色一级毛片免费| 青青操免费在线观看| 最近的中文字幕大全免费8| 国产免费av片在线看| mm1313亚洲精品无码又大又粗| 亚洲一区二区三区自拍公司| 久久久久亚洲av无码专区喷水 | 国产黄色一级毛片亚洲黄片大全| 2048亚洲精品国产| 蜜芽亚洲av无码精品色午夜| 亚洲综合在线一区二区三区| 一级女性全黄久久生活片免费| 久久精品免费观看| 成年轻人网站色免费看| 亚洲日本一区二区一本一道|