黑马程序员技术交流社区

标题: 内部类总结 [打印本页]

作者: a80C51    时间: 2015-9-11 21:15
标题: 内部类总结
内部类总结
1,定义,在其他类内部定义的类(嵌套类);与之相对的,包含内部类的类也称作外部类(宿主类)。

2,主要作用
        a,内部类提供了更好的封装,不允许同一包的其他类访问该类。
        b,内部类成员可以直接访问外部类的私有数据,但外部类无法直接访问内部类的实现细节。
        c,匿名内部类适合用于创建那些仅需要一次使用的类。

3,定义内部类的语法
        a,定义在其他类里面;
        b,内部类比外部类可以多使用三个修饰符:private、protected和static
        c,非静态内部类不能拥有静态成员。

4,非静态内部类
        1)外部类和内部类的区别
        a,外部类,上一级程序单元是包。两个作用域:同一包内及任意位置;只有两种访问权限:包访问权限default和公开访问权限public
        b,内部类,上一级程序单元是外部类。四个作用域:同一类、同一包、父子类以及任何位置。
        2)外部类成员变量、内部类成员变量与内部类里方法的局部变量同名时,则可通过使用this、外部类类名.this作为限定来区分。
        3)外部类的成员无法访问非静态内部类的成员,必须显示的创建非静态内部类对象来调用访问其实例成员。原因如下:
                a,因为非静态内部类的成员只在非静态内部类范围内可知。
                b,创建外部类对象是,非静态内部类对象不一定存在。
        4)非静态内部类里不能有静态方法、静态成员变量、静态初始化块。

5,静态内部类
        1)使用static修饰的内部类被称作类内部类(静态内部类)。
        2)静态内部类不能访问外部类的实例成员,只能访问外部类的类成员。
        3)接口内部类只能是静态内部类。默认使用public static 修饰。

6,使用内部类
        1)在外部类内部使用内部类
        不要在外部类的静态成员(包括静态和非静态两种)使用非静态内部类,因为静态成员不能访问非静态成员。
        2)在外部类以外使用非静态内部类
        a,省略访问控制符的内部类,只能被与外部类处于同一包中的其他类所访问;
        b,使用protected修饰的内部类,可被与外部类处于同一包中的其他类和外部类的子类所访问。
        c,使用public修饰的内部类,可以在任何地方被访问。
        3)在外部类以外使用静态内部类
        静态内部类只需要使用外部类即可调用构造器,而非静态内部类必须使用外部类对象来调用构造器。

7,局部内部类
        1)定义:一个内部类在方法中定义
        2)如果需要使用局部内部类定义变量、创建实例或者派生子类,那么只能子啊局部内部类所在的方法内进行。

作者: yz112069947    时间: 2015-9-11 21:19
学习了~~~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2