Java无难事:详解Java编程核心思想与技术
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

7.8 内部类规则总结

img

扫码看视频

比起普通的顶层类来说,内部类有着更为复杂的规则。首先,内部类如同类中的成员一样,有访问权限,可以声明为public、protected、default(不加访问说明符时)或private,这与普通的类是不一样的,普通的类只能声明为public或者default(不加访问说明符时)。

除了访问权限之外,我们还可以声明内部类为abstract、final或者static。当一个内部类被声明为抽象类时,我们就不能直接实例化这个内部类了;当一个内部类被声明为final类时,说明这个类不能被继承;当一个内部类被声明为静态类时,我们就可以直接创建这个内部类的对象,这一点在前面已经讲过了。

当我们声明一个静态的内部类(嵌套类)时,可以在这个内部类中加入静态方法,但是不能访问外部类的非静态成员。在非静态的内部类中不能包含静态成员,静态成员属于类本身,可以直接通过类名来访问,而非静态的内部类对象依赖于外部类对象,也就是说,必须得有外部类对象存在,而这与静态成员属于类本身,通过类名来调用冲突了。