经验不在于年限,在于积累---专注互联网软件开发

把工作当事业做,把项目当作品做!

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  55 Posts :: 0 Stories :: 66 Comments :: 0 Trackbacks
 

内部类是一个很好的工具,使用内部类可以简化代码,同时提高代码的优雅度。


(友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/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.blogjava.net/hankchen

posted on 2010-01-05 17:25 hankchen 阅读(757) 评论(0)  编辑  收藏 所属分类: Java基础

只有注册用户登录后才能发表评论。


网站导航: