經驗不在于年限,在于積累---專注互聯網軟件開發

          把工作當事業做,把項目當作品做!

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            55 Posts :: 0 Stories :: 66 Comments :: 0 Trackbacks
           

          內部類是一個很好的工具,使用內部類可以簡化代碼,同時提高代碼的優雅度。


          (友情提示:本博文章歡迎轉載,但請注明出處:hankchen,http://www.aygfsteel.com/hankchen

          下面介紹內部類和靜態內部類的用法區別:

            1/**
            2 *  Copyright (C): 2010
            3 *  @author 陳新漢
            4 *  2010-1-5 下午03:22:06
            5 */

            6
            7/**
            8 * 總結:
            9 * 1. 外部類可以訪問內部類的所有方法與屬性,包括私有方法與屬性
           10 * 2. 內部類可以訪問外部類的所有方法與屬性(包括私有方法與屬性),但靜態內部類只能訪問外部類的靜態屬性與方法。 
           11 * 3. 在外部類的靜態方法中,新建靜態內部類對象和非靜態內部類對象的方式差別很大。而在外部類的非靜態方法中,沒有什么差別!
           12 */

           13public class InnerClassTest {
           14
           15    private int a=0//外部類的非靜態成員
           16    private static int b=0//外部類的靜態成員
           17    
           18    /**
           19     * 外部類的靜態方法
           20     */

           21    public static void staticTest(){
           22        /**
           23         * 新建非靜態內部類,調用方式比較麻煩
           24         */

           25        InnerClassTest outClassTest=new InnerClassTest();
           26        Student student=outClassTest.new Student(); //必須這樣調用,才能新建內部類對象
           27        student.age=10//直接訪問內部類的私有屬性
           28        student.innerTest(); //直接訪問內部類的私有方法
           29        
           30        /**
           31         * 新建靜態內部類,調用方式很簡單,也比較靈活
           32         * 1. Student2 student2=new InnerClassTest.Student2();
           33         * 2. Student2 student3=new Student2(); 
           34         */

           35        Student2 student2=new InnerClassTest.Student2(); //可以這樣調用
           36        student2.age=100//直接訪問內部類的私有屬性
           37        student2.innerTest(); //直接訪問內部類的私有方法
           38        
           39        Student2 student3=new Student2(); //也可以這樣調用
           40        student3.age=100;
           41        student3.name="chenxinhan";
           42        student3.innerTest();
           43    }

           44    
           45    /**
           46     * 外部類的非靜態方法
           47     */

           48    public void test(){
           49        Student student=new Student(); //可以直接新建內部類對象
           50        student.age=10;
           51        student.innerTest();
           52        
           53        Student2 student3=new Student2(); //也可以這樣調用
           54        student3.age=100;
           55        student3.name="chenxinhan";
           56        student3.innerTest();
           57    }

           58    
           59    /**
           60     * 外部類的非靜態方法,用于內部類測試
           61     */

           62    private void outNoStaticMethod(){
           63        System.out.println("outNoStaticMethod");
           64    }

           65    
           66    /**
           67     * 外部類的靜態方法,用于內部類測試
           68     */

           69    private static void outStaticMethod(){
           70        System.out.println("outStaticMethod");
           71    }

           72
           73    /**
           74     *  普通內部類
           75     *  Copyright (C): 2008
           76     *  @author 陳新漢
           77     *  2010-1-5
           78     */

           79    class Student{
           80        private String name;
           81        private int age;
           82        private void innerTest(){
           83            System.out.println("Student--innerTest"+name+age);
           84            /**
           85             * 可以直接訪問外部類的任何成員,包括靜態、非靜態;public,protected,private等等。
           86             */

           87            outNoStaticMethod();
           88            outStaticMethod();
           89            a=1;
           90            b=1;
           91        }

           92    }

           93    
           94    /**
           95     *  靜態內部類
           96     *  Copyright (C): 2008
           97     *  @author 陳新漢
           98     *  2010-1-5
           99     */

          100    static class Student2{
          101        private String name;
          102        private int age;
          103        private void innerTest(){
          104            System.out.println("Student2--innerTest"+name+age);
          105            /**
          106             * 只能訪問外部類的靜態成員
          107             */

          108            outStaticMethod(); 
          109            b=1;
          110        }

          111    }

          112}

          113

          (友情提示:本博文章歡迎轉載,但請注明出處:hankchen,http://www.aygfsteel.com/hankchen

          posted on 2010-01-05 17:25 hankchen 閱讀(768) 評論(0)  編輯  收藏 所屬分類: Java基礎
          主站蜘蛛池模板: 双城市| 措勤县| 乐至县| 石渠县| 封丘县| 花莲县| 绥滨县| 滨州市| 宜丰县| 连平县| 松溪县| 富裕县| 清水河县| 修武县| 开化县| 斗六市| 昭觉县| 龙口市| 拉孜县| 兖州市| 通道| 登封市| 和硕县| 英德市| 芒康县| 新巴尔虎右旗| 济源市| 永福县| 黄平县| 集贤县| 广德县| 彭泽县| 韶山市| 扎囊县| 礼泉县| 古蔺县| 周口市| 长泰县| 清徐县| 林芝县| 台前县|