JAVA学习笔记7内部类
内部类的含义
在Java编程语言里,程序是由类(class)构建而成的。在一个类的内部也可以声明类,我们把这样的类叫做内部类。
作用
- 实现了更好的封装,我们知道,普通类(非内部类)的访问修饰符不能为private或protected,而内部类可以。当我们将内部类声明为private时,只有外部类可以访问内部类,很好地隐藏了内部类。
- 内部类可以继承(extends)或实现(implements)其他的类或接口,而不受外部类的影响。
- 内部类可以直接访问外部类的字段和方法,即使是用private修饰的,相反的,外部类不能直接访问内部类的成员。
- 内部类在编译后也会生成一个class文件,文件名为:外部类名$内部类名.class
分类
Java内部类可分为成员内部类、局部内部类、匿名内部类、静态内部类。
成员内部类
定义在外部类的成员(属性、方法)位置
可以使用四种访问权限修饰符修饰内部类
可以在内部类的内部定义属性和方法
注意:内部类不允许有静态成员
成员内部类的访问权限
成员内部类前可加上四种访问修饰符。
private:仅外部类可访问。
protected:同包下或继承类可访问。
default:同包下可访问。
public:所有类可访问。
成员内部类例子
成员内部类无条件访问外部类的属性和方法
1 | public class A { |
外部类访问内部类属性和方法
1 | public class A { |
外部类属性或方法隐藏
1 | class C{ |
匿名内部类
1 | public class test { |
注意事项:匿名内部类没有构造方法。也是唯一没有构造方法的内部类。匿名内部类和局部内部类只能访问外部类的final变量。
内部类的好处
完善了Java多继承机制,由于每一个内部类都可以独立的继承接口或类,所以无论外部类是否继承或实现了某个类或接口,对于内部类没有影响。
方便写事件驱动程序。
总结
静态内部类对象的创建一般是外部类.内部类 类名 = new 外部类.内部类();
成员内部类对象的创建一般是外部类.内部类 类名 = 外部类对象名.new 内部类();
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 klzy.xyz!
