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

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

            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 閱讀(772) 評論(0)  編輯  收藏 所屬分類: Java基礎
          主站蜘蛛池模板: 隆回县| 海安县| 余江县| 清新县| 忻城县| 台东县| 林甸县| 铜梁县| 吉木乃县| 咸宁市| 保山市| 合川市| 博客| 奉新县| 郧西县| 菏泽市| 南召县| 泰顺县| 伊通| 独山县| 南安市| 望江县| 江陵县| 深州市| 垫江县| 北辰区| 钟祥市| 屏边| 呼和浩特市| 贵州省| 芮城县| 乐平市| 黄龙县| 广宗县| 廉江市| 桐梓县| 台江县| 疏附县| 京山县| 湘阴县| 祁东县|