<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://www.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

    主站蜘蛛池模板: 久久99亚洲网美利坚合众国| 国产亚洲精品仙踪林在线播放| 亚洲高清日韩精品第一区| 亚洲一级毛片中文字幕| 亚洲AV无码一区二区三区网址| CAOPORN国产精品免费视频| 成人女人A级毛片免费软件| 亚洲日产韩国一二三四区| 亚洲av纯肉无码精品动漫| 国产免费怕怕免费视频观看| 亚洲视频2020| 一级女人18片毛片免费视频| 国产一卡2卡3卡4卡2021免费观看| 国产国拍亚洲精品mv在线观看| 亚洲精品亚洲人成在线| 日韩中文字幕免费视频| 亚洲天堂中文字幕在线| 亚洲精品久久无码| 999在线视频精品免费播放观看| 亚洲永久无码3D动漫一区| 99视频在线免费观看| 亚洲高清国产拍精品青青草原| 亚洲乱码卡三乱码新区| 亚洲免费在线播放| 亚洲国产精品无码成人片久久| 精品国产麻豆免费人成网站| 亚洲日韩精品一区二区三区| 久久99精品免费视频| 亚洲av永久无码嘿嘿嘿| 亚洲高清偷拍一区二区三区| 精品视频一区二区三区免费| 亚洲精品韩国美女在线| 成全动漫视频在线观看免费高清版下载 | 国产成人3p视频免费观看| 亚洲一区二区三区精品视频| 日本高清色本免费现在观看| 亚洲精品无码mⅴ在线观看| 亚洲国产天堂久久久久久| 一级**爱片免费视频| 亚洲精品视频免费看| 亚洲精品亚洲人成在线观看下载 |