父类方法的返回类型为 T,子类的返回类型为 S,那么根据里氏替换原则就要求 S 必须小于等于 T。也就是说,要么S和T是同一类型,要么 T 是 S 的父类。 我们可以看到,因为父类 fly 方法返回类型 Map 是 子类 fly 方法参数类型 HashMap 的父类(符合T > S),可以正常输出,符合里氏替换原则。若 T <= S 则编...
里氏替换原则 是 继承复用 的基石 , 只有当 子类 可以 替换 父类 , 并且 软件功能不受影响 时 , 父类才能真正的被复用 , 子类也能在父类的基础上 增加新的行为 ; 里氏替换原则 是对 开闭原则 的补充 , 实现开闭原则的关键是 进行抽象 , 父类 和 子类 的继承关系 , 就是 抽象 的具体实现 ; 二、...
里氏替换原则(Liskov Substitution Principle,LSP)是面向对象设计中的一个重要原则,由芭芭拉·利斯科夫(Barbara Liskov)在1987年提出。它是继承原则的一种深化和发展,强调子类必须能够替换掉父类并且不影响程序的正确性。 里氏替换原则的定义为:“如果对每一个类型为 S 的对象 o1,都有类型为 T 的对象 o2,使得以 T...
未遵守里氏替换原则: package com.example.demo.principle; public class LSPtest { public static void main(String[] args) { Bird bird1 = new Swallow(); Bird bird2 = new BrownKiwi(); bird1.setSpeed(120); bird2.setSpeed(120); System.out.println("如果飞行300公里:"); ...
这个不想过多解释,主要是注意向下转型(downcast)是不安全的,从里氏替换原则来看,就是有子类出现的地方父类未必就可以出现。 c)覆盖或实现父类的方法时输入参数可以被放大 publicclassFather {publicCollection doSomething(HashMap map){ System.out.println("父类被执行...");returnmap.values(); ...
里氏替换原则(Liskov Substitution Principle,LSP)是面向对象设计中的一项重要原则。它强调子类对象应该能够替换其父类对象,而不影响程序的正确性。里氏替换原则的目标是确保继承关系的正确性和稳定性,提高代码的可维护性和扩展性。 1. 里氏替换原则的定义 里氏替换原则要求: 子类必须能够完全替换父类,并且程序的行为...
里氏替换原则(Liskov Substitution Principle,LSP)是指如果对每一个类型为T1的对象o1,都有类型为T2的对象O2,使得以T1定义的所有程序P在所有的对象O1都替换成O2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型。这个定义看上去还是比较抽象的,我们重新理解一下。可以理解为一个软件实体如果适用于一个...
里氏替换原则 (LSP) LSP全称 LSP , Liskov Substitution Principle , 里氏替换原则 定义 所有引用基类(父类)的地方必须能透明地使用其子类的对象。通俗讲:子类可以扩展父类的功能,但不能改变父类原有的功能 优点 是实现开闭原则的重要方式之一 克服了继承中重写父类造成的可用性变差的缺点...
里氏代换原则(Liskov Substitution Principle,LSP)是指一个软件实体如果使用的是基类,那么也一定适用于其子类,而且它根本觉察不出使用的是基类对象还是子类对象;反过来的代换是不成立的,即如果一个软件实体使用一个类的子类对象,那么它不能够适用于基类对象。遵循里氏替换原则设计的意义:提高代码的可扩展性和可...