如何理解里氏替換原則?
Liskov替換原則核心就是子類能完全替換它的基類。
看上去這個應該與生俱來的能力。面向物件的核心多型,不就是靠這一條實現的。或許從沒有遇到的過子類改寫基類的情況。程式世界可能出現這種情況,而且在不經意之間出現這種情況。比如“鳥”是基類,這個基類有一個“飛翔”的行為。當“鴕鳥”繼承了“鳥”,這就會引起麻煩,覆寫基類“飛翔”的行為吧,這樣就不再符合里氏替換原則。“鴕鳥”是不能替換它的基類了。再舉個例子,“長方形”是基類,“正方形”是一種特殊的長方形,理所應當“正方形”是“長方形”的子類。“長方形”有單獨改變長或寬的行為,對於“正方形”來說,就得改寫這兩個行為以保證長等於寬。這樣就違背了里氏替換原則。當長方形調整了長,又調整寬,在算面積的時候。正方形這個子類就會出錯。
在我看了,里氏替換原則是不容易違背的。這是OO的基礎。里氏替換原則如果不存在了,OO何在。
SOLID 五項原則介紹:
相關推薦
如何理解里氏替換原則?
Liskov替換原則核心就是子類能完全替換它的基類。 看上去這個應該與生俱來的能力。面向物件的核心多型,不就是靠這一條實現的。或許從沒有遇到的過子類改寫基類的情況。程式世界可能出現這種情況,而且在不經意之間出現這種情況。比如“鳥”是基類,這個基類有一個“飛翔”的行為。當“
里氏替換原則的優點,理解,以及使用
什麼是里氏替換原則呢?它有兩種定義: ● 第一種定義,也是最正宗的定義:If for each object o1 of type S there is an object o2 of type T such that for all programs P defined i
第2章 面向物件的設計原則(SOLID):2_里氏替換原則(LSP)
2. 里氏替換原則(Liskov Substitution Principle,LSP) 2.1 定義 (1)所有使用基類的地方必須能透明地使用子類替換,而程式的行為沒有任何變化(不會產生執行結果錯誤或異常)。只有這樣,父類才能被真正複用,而且子類也能夠在父類的基礎上增加新的行為。也只有這樣
設計模式之禪(里氏替換原則)2018-10-19
介面與抽象類的區別: 介面卡模式:使用不同介面的類所提供的服務為客戶端提供它所期望的介面。 實現: 有一個 MediaPlayer 介面和一個實現了 MediaPlayer 介面的實體類 AudioPlayer。預設情況下,AudioPl
面向物件原則之里氏替換原則
轉載請註明出處:http://blog.csdn.net/feibendexiaoma/article/details/74391028 一.簡稱 英文全稱是Liskov Substitution Principle, 縮寫是LSP 二.定義 如果對每一個型別為S的物件O1,都
面向物件的五大設計原則之里氏替換原則
里氏替換原則(liskov substitution principle,簡稱LSP)的核心只有一句話,subtypes must be substitutable for their base types(子類必須能夠替換成它們的基類),關於它的定義和主要的思想如下: 由於面向物件程式設計
設計原則---里氏替換原則
本文參考自設計模式之禪(第二版)第二章 1.1 愛恨糾葛的父子關係 在面向物件的語言中,繼承是必不可少的、非常優秀的語言機制,它有如下優點: 程式碼共享,減少建立類的工作量,每個子類都擁有父類的方法和屬性; 提高程式碼的重用性; 子類可以形似父
面向物件原則之一 里氏替換原則
原文: 面向物件原則之一 里氏替換原則 前言 面向物件有人分為五大原則,分別為單一職責原則、開放封閉原則、依賴倒置原則、介面隔離原則、里氏替換原則。 也有人分為六大原則,分別為單一職責原則、開放封閉原則、依賴倒置原則、介面隔離原則、里氏替換原則、迪米特法則。 現在我們來介紹里氏替換原則
OO設計原則 -- Liskov Substitution Principle: 里氏替換原則(LSP)
概要 Functions that use pointers or references to base classesmust be able to use objects of derived classes without knowing it. 所有引
C#七大設計原則之里氏替換原則
里氏替換原則 定義:子型別必須能夠替換掉它們的父型別。 也就說子類可以賦給父類,父類物件可以強制轉化為子類物件。 在面向物件的思想中,派生類擁有基類的所有公開的所有特徵。 當派生類賦值給基類時
關於里氏替換原則與多型概念糾正
public abstract class Quadrangle{ protected abstract void getWidth(); protected abstract void getHeight(); } public class Rectangle exten
面向物件六大原則----里氏替換原則,依賴倒置原則
單一職責原則 英文名稱是Single Responsibility Principle,簡稱SRP 開閉原則英文全稱是Open Close Principle,簡稱OCP 里氏替換原則 英文全稱是Liskov Substitution Principle,簡稱LSP 依賴倒置原則 英文全稱是Depe
LSP里氏替換原則----正方形不是長方形和鴕鳥不是鳥的測試程式
//面向物件設計原則:LSP里氏替換原則 //正方形不是長方形的測試程式 #include <iostream> using namespace std; //長方形類Rectangle class Rectangle { private: int wi
設計模式學習之設計模式原則(一):單一職責原則和里氏替換原則
學習設計模式,以《設計模式之禪》為藍本進行總結與學習,今天先記錄設計模式六大原則的兩個原則:單一職責原則(SRP)和里氏替換原則(LSP)。 單一職責原則 Single Responsibilit
設計模式六大原則:里氏替換原則(五)
里氏代換原則是由麻省理工學院(MIT)電腦科學實驗室的Liskov女士,在1987年的OOPSLA大會上發表的一篇文章《Data Abstraction and Hierarchy》裡面提出來的,主要闡述了有關繼承的一些原則,也就是什麼時候應該使用繼承,什麼
(轉)設計模式六大原則(2):里氏替換原則
肯定有不少人跟我剛看到這項原則的時候一樣,對這個原則的名字充滿疑惑。其實原因就是這項原則最早是在1988年,由麻省理工學院的一位姓裡的女士(Barbara Liskov)提出來的。 定義1:如果對每一個型別為 T1的物件 o1,都有型別為 T2 的物件o2,使
面向物件設計原則--里氏替換原則(LSP)和依賴倒置原則(DIP)
面向物件設計原則–里氏替換原則(LSP)和依賴倒置原則(DIP) tags:設計模式 LSP–inheritance should ensure that any property prove
"圍觀"設計模式(2)--里氏替換原則(LSP,Liskov Substitution Principle)
在面向物件的程式設計中,里氏替換原則(Liskov Substitution principle)是對子型別的特別定義。它由芭芭拉·利斯科夫(Barbara Liskov)在1987年在一次會議上名為“資料的抽象與層次”的演說中首先提出。里氏替換原則的內容可以描述為: “派生
設計模式原則——里氏替換原則
里氏替換原則(Liskov Substitution Principle) 定義1:如果對每一個型別為 T1 的物件 o1,都有型別為 T2 的物件 o2,使得以 T1 定義的所有程式 P 在所有的物件 o1 都代換成 o2 時,程式 P 的行為沒有發生變化,那麼型別 T2
六大設計原則,里氏替換原則
我們都知道繼承是面嚮物件語言中極其重要的一部分語法,當然他的存在給了我們很大的便利,但是同樣他也有很多的缺陷。 繼承是侵入性的,只要繼承,就必須擁有父類的所有屬性和方法; 降低了程式碼的靈活性。子類必須擁有父類的屬性和方法,上子類多了很多的約束; 增強了耦合