1//面向对象设计原则:LSP里氏替换原则2//鸵鸟不是鸟的测试程序34#include <stdio.h>56//鸟类7classBird8{9private:10doublevelocity;//速度11public:12virtualvoidfly() {printf("I can fly!\n");}13virtualvoidsetVelocity(doublev){velocity =v;}14virtualdoublegetVelocity(){returnvelocity;}15};1617//...
LSP是使OCP成为可能的主要原则之一。正是子类型的可替换性才使得使用基类类型的模块在无需修改的情况下就可以扩展。这种可替换性必须是开发人员可以隐式依赖的东西。因此,如果没有显示地强制基类类型的限制,那么代码就必须良好地并且明显地表达出这一点,当然更好的设计是OCP与LSP两个原则可以同时满足。 References: ...
2、LSP是保证OCP的重要原则 3、这些基本的原则在实现方法上也有个共同层次,就是使用中间接口层,以此来达到类对象的低偶合,也就是抽象偶合! 4、派生类的退化函数:派生类的某些函数退化(变得没有用处),Base的使用者不知道不能调用f,会导致替换违规。在派生类中存在退化函数并不总是表示违反了LSP,但是当存在这种情...
玩具枪继承枪支抽象类的情况:射击方法不能被实现,如果实现里面具体逻辑为空则毫无意义,即正常情况下不能实现父类的shoot方法,shoot方法必须去掉,从LSP来看如果去掉,则违背了LSP的第一个原则:子类必须实现父类方法。(代码层面来看如果去掉则会报错) package des.lsp; public class ToyGun extends AbstractGun { @Over...
里氏替换原则:(LSP :Liskov Substitution Principle)。 使用一个父类对象,替换成该父类对象的子类对象后,该程序不会发生异常。(该书指的为接口,而没有提到继承关系) 或者说,调用一个Interface,切换成直接调用该接口的实现对象后,该程序不会发生异常。(该书中的表述为接口) ...
首先,不要误解这里的LSP哈,里式替换原则:Liskov Substitution Principle,缩写为 LSP。 理解里式替换原则 里式替换原则用中文描述出来,是这样的:子类对象(object of subtype/derived class)能够替换程序(program)中父类对象(object of base/parent class)出现的任何地方,并且保证原来程序的逻辑行为(behavior)不变及正确...
🐱👓一、里氏替换原则(LSP)简介 里氏替换原则(Liskov Substitution Principle,简称LSP)是面向对象设计的基本原则之一。其核心思想是:子类必须能够替换其父类,并且替换后不会影响程序的正确性。换句话说,如果软件中的对象使用的是基类的话,那么无论它实际上被哪个子类替换,软件的行为都不会发生变化。vb...
简介:里氏替换原则(Liskov Substitution Principle , LSP) 由麻省理工学院计算机科学西教授 Barbara Liskov 于1987年提出, 她提出: **继承必须确保超类所拥有的性质在子类中仍然成立。** @[toc] 概述 里氏替换原则(Liskov Substitution Principle , LSP) 由麻省理工学院计算机科学西教授 Barbara Liskov 于1987年提出,...
我们来看下面这个面向对象设计中违背LSP原则经典的例子 public class Rectangle { private double _width; private double _height; public void SetWidth(double w) { _width = w; } public void SetHeight(double w) { _height = w; } public double GetWidth() { return _width; } public double GetHe...