使类和成员的可访问性最小
概述
封装(encapsulation),良好的设计应该具备隐藏其内部数据和实现细节的特点,能够把它的API与它的实现清晰地隔离开,
访问控制
- 尽量使得每个类或者成员不被外界访问;
- 如果类能被做成private的,它就应该被声明为private;
- 如果一个private的类只有在某一个类的内部被用到,那就考虑使它成为唯一使用它的那个类的私有嵌套类;
- 对于公有类的成员,当访问级别从包级私有变成protected级别后,会大大增加可访问性;
如果方法覆盖了超类中的一个方法,子类中的访问级别就不允许低于超类中的访问级别。这样可以保证任何使用超类实例的地方也都可以使用子类的实例;
实例域不能是公有的
如果域是非final的,或者指向一个可变对象的final引用。一旦域成为公有的,就会放弃了强制这个域不可变的能力。
注意长度非零的数组总是可变的,所以类具有公有的静态final数组域,或者返回这个域的访问方法都是错的。应该实现为:
1 | private static final Thing[] PRIVATE_VALUES = {....}; |