經(jīng)驗(yàn)不在于年限,在于積累---專注互聯(lián)網(wǎng)軟件開發(fā)

          把工作當(dāng)事業(yè)做,把項(xiàng)目當(dāng)作品做!

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            55 Posts :: 0 Stories :: 66 Comments :: 0 Trackbacks
           

          內(nèi)部類是一個很好的工具,使用內(nèi)部類可以簡化代碼,同時提高代碼的優(yōu)雅度。


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

          下面介紹內(nèi)部類和靜態(tài)內(nèi)部類的用法區(qū)別:

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

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

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

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

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

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

           44    
           45    /**
           46     * 外部類的非靜態(tài)方法
           47     */

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

           58    
           59    /**
           60     * 外部類的非靜態(tài)方法,用于內(nèi)部類測試
           61     */

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

           65    
           66    /**
           67     * 外部類的靜態(tài)方法,用于內(nèi)部類測試
           68     */

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

           72
           73    /**
           74     *  普通內(nèi)部類
           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             * 可以直接訪問外部類的任何成員,包括靜態(tài)、非靜態(tài);public,protected,private等等。
           86             */

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

           92    }

           93    
           94    /**
           95     *  靜態(tài)內(nèi)部類
           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             * 只能訪問外部類的靜態(tài)成員
          107             */

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

          111    }

          112}

          113

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

          posted on 2010-01-05 17:25 hankchen 閱讀(767) 評論(0)  編輯  收藏 所屬分類: Java基礎(chǔ)

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 林甸县| 哈尔滨市| 荣成市| 南华县| 桐城市| 峨眉山市| 三原县| 泊头市| 寻甸| 区。| 巴塘县| 平顶山市| 乐陵市| 太原市| 道孚县| 七台河市| 贡山| 穆棱市| 龙里县| 怀来县| 上饶县| 博乐市| 阿尔山市| 洪江市| 苗栗县| 义马市| 灵武市| 离岛区| 克什克腾旗| 临桂县| 吴川市| 运城市| 西城区| 镇赉县| 大同县| 车险| 紫云| 大方县| 唐河县| 兴和县| 乳源|