Java内部类

来源:互联网 发布:m1a2和豹2知乎 编辑:程序博客网 时间:2024/05/19 06:49

内部类

内部类的作用:
1.内部类可以很好的实现隐藏
一般的非内部类,是不允许有 private 与protected权限的,但内部类可以
2.内部类拥有外围类的所有元素的访问权限
3.可是实现多重继承
4.可以避免修改接口而实现同一个类中两种同名方法的调用。

普通内部类与嵌套内部类:
- 普通成员内部类不能有static方法或变量(除了static final常量)
- 静态内部类对象的创建不依赖外部类的实例,但成员内部类对象的创建需要依赖外部类的实例;
- 成员内部类能够访问外部类的静态和非静态成员,静态内部类不能访问外部类的非静态成员;
- 普通内部类不能有static数据和static属性,也不能包含嵌套类,但嵌套类可以。而嵌套类不能声明为private,一般声明为public,方便调用。
- 成员内部类是依附于外围类的,所以只有先创建了外围类才能够创建内部类。

public class OuterClass {    private String sex;    public static String name = "chenssy";    /**     *静态内部类     */    static class InnerClass1{        /* 在静态内部类中可以存在静态成员 */        public static String _name1 = "chenssy_static";        public void display(){            /*              * 静态内部类只能访问外围类的静态成员变量和方法             * 不能访问外围类的非静态成员变量和方法             */            System.out.println("OutClass name :" + name);        }    }    /**     * 非静态内部类     */    class InnerClass2{        /* 非静态内部类中不能存在静态成员 */        public String _name2 = "chenssy_inner";        /* 非静态内部类中可以调用外围类的任何成员,不管是静态的还是非静态的 */        public void display(){            System.out.println("OuterClass name:" + name);        }    }    /**     * @desc 外围类方法     * @author chenssy     * @data 2013-10-25     * @return void     */    public void display(){        /* 外围类访问静态内部类:内部类. */        System.out.println(InnerClass1._name1);        /* 静态内部类 可以直接创建实例不需要依赖于外围类 */        new InnerClass1().display();        /* 非静态内部的创建需要依赖于外围类 */        OuterClass.InnerClass2 inner2 = new OuterClass().new InnerClass2();        /* 方位非静态内部类的成员需要使用非静态内部类的实例 */        System.out.println(inner2._name2);        inner2.display();    }    public static void main(String[] args) {        OuterClass outer = new OuterClass();        outer.display();    }}----------------Output:chenssy_staticOutClass name :chenssychenssy_innerOuterClass name:chenssy
0 0
原创粉丝点击