天天看点

《Effective Java》笔记 使类和成员的可访问性最小化

1.设计良好的模块会隐藏所有的实现细节,把它的api与实现清晰的隔离开来,

模块之间只通过它们的api进行通信,一个模块不需要知道其他模块的内部工作情况:即信息隐藏或封装,是软件设计的基本原则之一。

2.java提供了许多机制来协助信息隐藏。访问控制(access control)机制决定了类、接口和成员的可访问性(accessibility)。

3.第一规则:尽可能地使每个类或者成员不被外界访问。

或者说在保证功能的情况下,使用最小的访问级别。

4.对于成员(域、方法、嵌套类和嵌套接口)有四种可能的访问级别。

私有的(private)——只有在声明该成员的顶层类内部才可以访问这个成员。

包级私有的(package-private)——声明该成员的包内部的任何类都可以访问这个成员。是缺省(default)的访问级别。

受保护的(protected)——声明该成员的类的子类可以访问这个这个成员,并且声明该成员的包内部的任何类也可以访问这个成员。

公有的(public)——在任何地方都可以访问该成员。

5.如果方法覆盖了超类中的一个方法,子类中的访问级别就不允许低于超类中的访问级别。

这样可以确保任何可使用父类实例的地方都可以使用子类的实例。如果违反这条规则,编译器会产生错误消息。

接口的实现也遵循了这条规则:接口中所有的类方法在实现类中必须被声明为公有的。因为接口中的所有方法都隐含着公有访问级别。