Effective Java 4:类和接口
第十三条:使类和成员的可访问性最小
用于信息隐藏,尽可能的使每个类或者成员不被外界访问,
对于顶层的类和接口,只有两种访问级别:包级私有,和共有的,
private:只有该类的内部才可以访问这个成员
包级私有:声明的成员在包内部都不可以访问,缺省型
protected:声明该类的包,和该类的之类都可以访问
public:在任何地方都可以访问
如果一个类覆盖了超类的一个方法,那么子类的访问级别一定不能比超类的访问级别低,如果一个类实现了一个接口的所有方法,那么接口中所有的方法都必须声明为共有的。
实例域绝不能是公有的,包含公有可变域的类并不是线程安全的
类具有共有的 静态final数组域,或者返回这种域的访问方法不可以:public static final Thing[] VALUES={};
两种方法避免:使公有的数组变私有,增加一个共有的不可变列表,(2)数组私有,增加一个公有方法,返回私有数组的一个拷贝
public static final Thing returnVa(){
return VALUE.clone();
常量域的定义:单词大写,并且之间用_下划线分割单词
第十四条:在公有类中,使用访问方法,而非共有域
公有类永远不应该暴漏可变的域
第十五条:使可变性最小化
1.不要提供如何会修改对象的状态方法
2.保证类不会被扩展
3.使所有的域都是私有的,final的
4.确保对于任何可变组件的互斥访问
5.不可变对象线程安全,因为不可变
6.鼓励客户端尽可能的重用现有的实例
7.不可变类的唯一缺点是:对于每个不同的值,都需要一个单独的对象
可变配套类:对于多操作步骤,提高性能,让所有的构造器变成私有的,或者包含私有的,并添加共有的静态工厂,代替公有构造器,坚决不要为每个get方法,编写一个相应的set方法