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

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

里氏转换原则为良好的继承定义了一个规范,包含了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();

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目录: 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒...
    加油小杜阅读 4,021评论 0 1
  • 设计模式六大原则 设计模式六大原则(1):单一职责原则 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类...
    viva158阅读 4,121评论 0 1
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 5,013评论 0 2
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 4,761评论 0 4
  • 我的大脑有时会浑沌一片,有时又清明无比,就像这段日子! 在顾天的公寓里呆了很多个混沌的日子后,近期感觉清明了不...
    雪雪开心阅读 1,280评论 0 0