第13条 使类和成员的可访问性最小化

软件设计的基本原则之一,就是系统要模块化,模块之间只经过他们的API进行通讯,一个模块不须要知道其余模块的内部工做状况,这个概念称做信息隐藏(information hiding)或封装(encapsulation)。

首先须要理解修饰符的可访问性,如图
安全

如下就是须要遵照的规则模块化

1:尽量地使每一个类或成员不被外界访问。换句话说,应该使用与你正在编写的软件的对应功能相一致、尽量最小的访问级别。测试

2:对于顶层的(非嵌套的)类和接口,只有两种可能非访问级别,要从是包级私有的也就是default,要么是public的.包级私有就意味着它是这个包实现的一部分,不会做为该包API被导出,这样在之后的发型版本中,对它修改、替换、删除就不用担忧会影响先有客户端的程序。spa

3:若是一个包级私有的顶层类(或者接口)只是在某一个类内部被用到,就应该把它变成惟一使用它的那个类的私有嵌套类。线程

4:下降没必要要公有类的可访问性,比下降包级私有的顶层类更重要的多,由于共有类是API的一部分,而包级私有的顶层类已是包实现的一部分了。设计

5:受保护(protected)的类或成员是导出API的一部分,必须永远获得支持,应该避免尽可能少用。orm

6:若是子类覆盖了超类的一个方法,子类中的访问级别就不容许低于超类中的访问级别,不然会编译错误。实现了接口的全部方法也必须是共有的,由于接口中的全部方法都是隐含着共有访问级别。接口

7:为了便于测试,不该该把其访问级别成为共有的,取而代之是把测试类成为包的一部分,从而可以访问它的包级私有元素。io

8:实例域决不能是共有的,包含公有可变域的类即使是final的也不是线程安全的,编译

相关文章
相关标签/搜索