设计原则二(里氏转换原则)

子类对父类的方法尽量不要重写和重载。因为父类代表了定义好的结构,通过这个规范的接口与外界交互,子类不应该随便破坏它
简要概述:弥补了继承“开-闭”

里氏转换原则为良好的继承定义了一个规范,包含了4层含义:

  • 子类必须完全实现父类的方法
  • 子类可以有自己的个性
  • 覆盖或实现父类的方法时输入参数可以被放大
  • 覆盖或实现父类的方法时输出结果可以被缩小

模式体现

  • 策略模式
  • 组合模式
  • 代理模式

经典代码解析
Animal.java

public abstract class Animal{
      public abstract void move();
}

Horse.java

public class Horse  extends Animal{
    public void move(){
         System.out.println("马儿跑");
    }
}

Bird.java

public class Bird extends Animal{
    public void move(){
         System.out.println("鸟儿飞");
    }
}

TestLSP.java

public class TestLSP{
    public static void main(String args[]){
        Animal animal;
        animal=new Horse();
        animal.move();
        animal=new Bird();
        animal.move();
    }
}

上述反过来子类对象指向父类违反里氏转换原则 //Horse h=new Animal();

你可能感兴趣的:(设计原则二(里氏转换原则))