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

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

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

    敬的世界

    常用鏈接

    統(tǒng)計

    最新評論

    嵌套類和內部類

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

    一 概念:

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

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

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

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

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

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

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

    二 使用:

    1. 訪問內部類:

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

    具體訪問方法如下:
    (1).內部類,要以如下形式訪問, outclass 是 OutClass 的一個實例,它放在 new 前指示內部類的實例是屬于一個特定的外部類的實例的。 這是因為,只有外部類的實例存在,他的實例內部類( 也就是非靜態(tà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)的,它不依賴于它外部類的某個實例,所以無須先實例化外部類。這和內部類是不一樣的。

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

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

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

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

    主站蜘蛛池模板: 国产中文字幕在线免费观看| 亚洲一级Av无码毛片久久精品 | 最好免费观看高清在线 | 亚洲熟妇AV一区二区三区宅男| 一级做α爱过程免费视频| 97国产免费全部免费观看| 亚洲AV无码国产精品麻豆天美| 羞羞视频在线观看免费| 成在线人永久免费视频播放| 亚洲制服在线观看| 夜色阁亚洲一区二区三区| 色九月亚洲综合网| 亚洲人成电影在线天堂| 99精品视频在线观看免费| 亚洲日韩欧洲乱码AV夜夜摸| 日韩免费在线中文字幕| 亚洲成A人片77777国产| 全黄A免费一级毛片| 亚洲成人一区二区| www视频在线观看免费| 亚洲中文无码线在线观看| 国产精品久久免费| 免费a级毛片无码a∨免费软件| 亚洲精品国产美女久久久| 香港a毛片免费观看| 亚洲人成电影在在线观看网色| 免费国产黄网站在线观看| 91亚洲国产成人久久精品网站| 中文字幕在线观看免费视频| 亚洲黄网在线观看| 在线观看亚洲av每日更新| 人妻在线日韩免费视频| 婷婷亚洲久悠悠色悠在线播放| 91青青青国产在观免费影视| 亚洲精品无码久久久久久久| 四虎国产精品免费久久| 亚洲av无码专区在线观看下载| 伊人久久亚洲综合影院 | 亚洲视频2020| 国产av无码专区亚洲av果冻传媒| 免费观看91视频|