里氏替换原则
* 所有引用基类的地方,都可以透明的使用其子类的对象 * 在子类中尽量不要去重写父类的方法
举一个平常会遇到的错误案例:
当A类继承了B类,B类中自己想定义一个新方法,这时方法名不小心,无意识的和父类方法一样,那么,在之后使用该方法时,想要调用父类的该方法,但子类重写了,导致了错误。
所以里氏替换原则什么意思呢?就是非必要不要重写父类的方法,如果一定要重写的话,就不要继承该父类,而是采用聚合,依赖,组合等方式来解决问题。
class Base{
//里面放置公共方法
}
class A3 extends Base{
public int calculate(int a,int b){
return a+b;
}
}
class B3 extends Base{
// 关联
private A3 a3 = new A3();
public int calculate(int a,int b){
return a-b;
}
public int sum(int c,int d){
return calculate(c,d)+1;
}
//这里要使用A类的方法
public int AFunction(int a,int b){
return a3.calculate(a,b);
}
// 依赖
public int AFunction2(A3 a3,int a,int b){
return a3.calculate(a,b);
}
// 聚合
//聚合关系中做为成员变量的类通常使用set方法赋值
private A3 a33;
public void set(A3 a3){
this.a33 = a3;
}
public int AFunction3(int a,int b){
return a33.calculate(a,b);
}
}