java Source

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            14 Posts :: 24 Stories :: 8 Comments :: 0 Trackbacks

          內部類是Java語言一個重要的基本特性,在Java開發的許多領域都會經常用到。內部類的定義說簡單一點就是將一個類定義在另外一個類的內部。內部類允許你把一些邏輯相關的類組織在一起,控制內部類代碼的可視性,它和類的組合是完全不同的概念。內部類主要有以下比較關鍵的特性:

           

          1.  普通的非內部類不能被聲明為privateprotected,否則就失去了創建該類的意義。但是內部類通常可以被聲明為privateprotected類型,因為這樣可以防止他人對該內部類實現的功能進行修改,達到隱藏實現細節的目的。例如:

          class Fruit {

            private class Weight {

          private String i;

          private Weight(String j) {

            i = j;

          }

          public String read() {

            return i;

          }

          }

          }

          class test {

            public static void main(String[] args) {

          Fruit f = new Fruit();

          f.Weight w = f.new Weight(); //不能訪問private類,如果Weightprotected類型則可以

          }

          }

          2.  在方法或某控制語句(if/for/while)的作用域內定義內部類,將只能在該范圍內調用內部類的方法和成員變量。

          3.  匿名內部類是一種特殊的內部類,如果希望它使用一個在其外部定義的對象,那么編譯器會要求其參數引用是final的。

          public class Fruit {

            public Tea cont(final int j) {

          return new Tea() {

            private int i = j;

            public int read() {

              return i;

          }

          }; //注意這里的分號

          }

          public static void main(String[] args) {

            Fruit f = new Fruit();

            Tea t = f.cont;

          }

          }

          而當方法cont(final int j)中的參數j只是被傳遞到匿名類中的構造器時,可以不用被聲明為final類型,如return new Tea(j)。這里提到了匿名內部類的構造器,那么它是怎么被初始化的呢?

          public class Fruit {

            public Tea cont(int j) {

          return new Tea(j) {

          System.out.println(j);

          };

          }

          }

                   還可以這樣初始化匿名內部類:

          public class Fruit {

            public Tea cont(final int j) {

          return new Tea(j) {

            int i;

            // 初始化匿名內部類

            {

            i = j;

            System.out.print(i);

          }

          };

          }

          }

                   方法cont()可以被稱為實例初始化方法,使得匿名內部類通過構造器而被初始化,在實際應用中,我們不能重載實例初始化方法,因為匿名內部類只能有一個構造方法。
          posted on 2005-11-15 14:23 JustinLei 閱讀(386) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 龙川县| 营山县| 元氏县| 吕梁市| 施甸县| 黄石市| 卢湾区| 武功县| 芜湖县| 宁明县| 高尔夫| 句容市| 常宁市| 通城县| 青龙| 庐江县| 无棣县| 连州市| 营山县| 澄江县| 成都市| 龙陵县| 大竹县| 上林县| 平原县| 桐城市| 宁夏| 永平县| 潼南县| 临邑县| 香港 | 湟源县| 威海市| 宁波市| 准格尔旗| 鲁甸县| 阿拉善左旗| 新竹县| 怀远县| 周口市| 房山区|