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方法

原文地址:https://www.cnblogs.com/csxf/p/3285273.html