第13条 使类和成员的可访问性最小化
要确保公有的类中不应该有包含的共有域,并且确保公有静态final域所引用的对象都是不可变的
1.private是私有的,只在类内部使用;
2.默认是default可不写,在包内部可以访问;
3.protexted在包内部和继承该类的子类中使用;
4.public在整个项目中可以使用;
第14条 在公有类中使用访问方法而非公有域
第15条 使可变性最小化
成为不可变类,须遵循以下几点
1.不要提供任何会修改对象的方法
2.保证类不会被扩展
3.使所有的域都是final的(对像是基本数据类型,或者不可变的引用类型)
4.使所有的域都成为私有的
4.确保对于任何可变的组件的互斥访问
不可变类 eg.
package item;
/**
* @author GuanBin
* @version Persen.java, v1 2017/12/14 下午4:55 GuanBin Exp $$
*/
public class Complex {
private final double re;
private final double im;
public Complex(double re,double im){
this.re=re;
this.im=im;
}
public double realPart(){
return re;
}
public double imaginaryPart(){
return im;
}
public Complex add(Complex c){
return new Complex(re+c.re,im+c.im);
}
public double getRe() {
return re;
}
public double getIm() {
return im;
}
}
第16条 复合优先于继承
我对于这条的理解是,能不用继承的就不要继承,因为继承会重写超类中的方法,父类变,子类就必须变,继承破坏了封装,对于父类而言,它的实现细节对与子类来说都是透明的,继承是一种强耦合关系,总之慎用继承;
如果非用继承,可以考虑复合方式,一个a类先实现超类,然后子类再去继承这个a类;