国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

內部類(innerclass)

2019-11-14 15:24:24
字體:
來源:轉載
供稿:網友

一般情況下,我們把類定義成獨立的單元。有些情況下,我們把一個類放在另一個類的內部定義,稱為內部類

內部類的作用:

  1. 內部類提供了更好的封裝。只能讓外部類直接訪問,不允許同一個包中的其他類直接訪問。
  2. 內部類可以直接訪問外部類的私有屬性,內部類被當成其外部類的成員。但外部類不能訪問內部類的內部屬性。

內部類的使用場合:

由于內部類提供了更好的封裝特性,并且可以很方便的訪問外部類的屬性。所以,通常內部類在只為所在外部類提供服務的情況下優先使用。


內部類的分類

  1. 成員內部類
    (可以使用PRivate、protected、public等任意進行修飾,如成員變量一般。類文件:外部類$內部類.class)

    a) 非靜態內部類 (外部類里使用非靜態內部類和平時使用其他類沒什么不同)

    i. 非靜態內部類必須寄存在一個外部類對象里。因此,如果有一個非靜態內部類對象,那么一定存在對應的外部類對象。非靜態內部類對象單獨屬于外部類的某個對象。

    ii. 非靜態內部類可以使用外部類的成員,但是外部類不能直接訪問非靜態內部類成員。

    iii. 非靜態內部類不能有靜態方法、靜態屬性、靜態初始化塊。

    iv. 靜態成員不能訪問非靜態成員:外部類的靜態方法、靜態代碼塊不能訪問非靜態內部類,包括不能使用非靜態內部類定義變量、創建實例。

    v. 成員變量訪問要點:

    1. 內部類里方法的局部變量:變量名
    2. 內部類屬性:this.變量名
    3. 內部類屬性:外部類名.this.變量名

    vi. 內部類的訪問:

    1. 外部類中使用內部類:new InnerClass()
    2. 外部類以外的地方使用非靜態內部類:Outer.Inner var_name = OuterObject.new Inner()

    b) 靜態內部類

    i. 定義方式:
    static class ClassName {
    // 類體
    }

    ii. 使用要點:

    1. 當一個靜態內部類對象存在,并不一定存在對應的外部類對象。因此,靜態內部類的實例方法不能直接訪問外部類的實例方法。
    2. 靜態內部類看做外部類的一個靜態成員。因此,外部類的方法中可以通過:靜態內部類.名字訪問靜態內部類的靜態成員。通過 new 靜態內部類() 訪問靜態內部類的實例。
    1. 在外部類的外面創建靜態內部類:
      Outer.StaticInner sInner = new Outer.StaticInner();
  2. 匿名內部類
    適合那種只需要使用一次的類。比如:鍵盤監聽操作等等。語法:
    new 父類構造器(實參列表) 實現接口() {
    //匿名內部類類體!
    }

  3. 局部內部類
    定義在方法內部。作用域只限于本方法。用的非常少。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 修文县| 江山市| 嘉峪关市| 绵阳市| 鸡泽县| 福贡县| 湘西| 临朐县| 肇庆市| 邳州市| 长武县| 阿城市| 英德市| 农安县| 资兴市| 大名县| 台北县| 门头沟区| 蛟河市| 山西省| 瓦房店市| 唐河县| 驻马店市| 齐齐哈尔市| 皮山县| 民权县| 思南县| 新巴尔虎右旗| 荣成市| 康定县| 南投县| 福清市| 宣城市| 苍梧县| 通江县| 永川市| 南康市| 岗巴县| 涟水县| 同德县| 乌海市|