七个原则6-里氏替换原则

2018-12-27  本文已影响0人  CC晨_程序小生

七个原则6-里氏替换原则

示例1:矩形是特殊的正方形

矩形是一种特殊的长方形,当我们设计类时如果使 Square 继承 Rectangle ,这又是不合适的,因为 Square 的 Length 和 Width 一致,它不需要两个 set 方法。所以合理的方式应该是让他们共同实现 四边形 Quadrangle 接口

里氏替换原则

示例2:子类重载父类方法时,方法入参要比父类宽松

public class Base {
    public void method(HashMap map){
        System.out.println("父类被执行");
    }
}
//------------------------------------------
public class Child extends Base{
    @Override
    public void method(HashMap map) {
        System.out.println("子类HashMap入参方法被执行");
    }

    public void method(Map map){
        System.out.println("子类Map入参方法被执行");
    }
}
//--------------------------------------------
public class Test {
    public static void main(String[] args) {
        Base child = new Child();
        HashMap hashMap = new HashMap<>();
        child.method(hashMap);
    }
}

示例3:子类重载父类方法时,方法返回值要比父类严格

public interface Base {
    Map method();
}
//-------------------------------------------------
public class Child implements Base {
    @Override
    public HashMap method() {
        HashMap hashMap = new HashMap();
        System.out.println("子类method被执行");
        hashMap.put("message","子类method被执行");
        return hashMap;
    }
}
//---------------------------------------------------
public class Test {
    public static void main(String[] args) {
        Child child = new Child();
        System.out.println(child.method());
    }
}
上一篇 下一篇

猜你喜欢

热点阅读