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

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

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

    敬的世界

    常用鏈接

    統計

    最新評論

    嵌套類和內部類

    ?來自: http://m.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

    主站蜘蛛池模板: 水蜜桃视频在线观看免费播放高清| 久久精品国产亚洲精品2020| 四虎永久成人免费影院域名| 国产一区二区免费在线| 日韩高清在线高清免费| 免费一级做a爰片久久毛片潮喷| 国产一级做a爱免费视频| 亚洲国产精品成人| 亚洲日韩在线观看免费视频| 亚洲中文字幕无码专区| 亚洲综合精品香蕉久久网| 亚洲日本一区二区三区在线| 亚洲毛片αv无线播放一区| 亚洲成AV人片在线观看无| 亚洲欧洲一区二区| 亚洲视频小说图片| 亚洲看片无码在线视频 | 成人人免费夜夜视频观看| 成年人免费视频观看| 日本黄页网站免费| 亚洲欧洲自拍拍偷精品 美利坚 | 亚洲午夜无码片在线观看影院猛| 亚洲国产主播精品极品网红| 国产亚洲精品精华液| 亚洲精品人成电影网| 亚洲乱亚洲乱妇无码| 黄色a三级免费看| a级日本高清免费看| 亚欧在线精品免费观看一区| 天天看免费高清影视| 久久久久亚洲av毛片大| 久久精品国产亚洲AV高清热 | 亚洲高清在线播放| 亚洲激情视频图片| 无套内射无矿码免费看黄| 成人无码WWW免费视频| 日韩免费精品视频| 亚洲av无码天堂一区二区三区| 亚洲精品tv久久久久久久久| 亚洲精品网站在线观看你懂的| 亚洲精品无码久久久久牙蜜区|