設計原則系列文章 必知必會的設計原則——單一職責原則 必知必會的設計原則——開放封閉原則 必知必會的設計原則——依賴倒置原則 概述 如果S(子類)是T(父類)的子類型,則T(父類)類型的對象可以替換為S(子類)類型的對象。 所有引用父類對象的地方,都可以使用子類類型代替。子類可以替換父類。 里氏替換 ...
設計原則系列文章
必知必會的設計原則——單一職責原則
必知必會的設計原則——開放封閉原則
必知必會的設計原則——依賴倒置原則
概述
如果S(子類)是T(父類)的子類型,則T(父類)類型的對象可以替換為S(子類)類型的對象。
所有引用父類對象的地方,都可以使用子類類型代替。
子類可以替換父類。
里氏替換代碼
public class Person { public string ? Name { get; set; } } public class Student : Person { public int Id { get; set; } } public class Teacher : Person { public int Number { get; set; } }
// 父類只有自己的成員,無法擁有子類的成員 Person p=new Person(); p.Name = "ren"; //子類繼承了父類,不僅有自己的成員,而且也擁有了父類的成員 Student student=new Student(); student.Name = "xuesheng"; student.Id = 1; Teacher teacher=new Teacher(); teacher.Name = "教師"; teacher.Number = 2; Person pStudent = new Student(); pStudent.Name = "父類變數接收了子類對象"; //編譯不通過,因為父類必須強轉為子類,也就是說將pStudent強制轉換為Student類型 //Student s = pStudent; Student s = (Student)pStudent; s.Name = ""; s.Id = 2; // 也可以用as做為轉換,轉換不成功時返回null,is用來判斷是否轉換成功,成功則為true,失敗則為false Student? ss = p as Student; if (p is Student) { ... } else { ... }
總結
里氏替換原則日常編程大家肯定用,也特別簡單。但我們會發現在編程中還是有同學會違反里氏替換原則,最後造成的後果寫的代碼出問題的幾率將會大大增加。
作者:課間一起牛
出處:https://www.cnblogs.com/mhg215/
聲援博主:如果您覺得文章對您有幫助,請點擊文章末尾的【關註我】吧!
別忘記點擊文章右下角的【推薦】支持一波。~~~///(^v^)\\\~~~ .
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
如果您有其他問題,也歡迎關註我下方的公眾號,可以聯繫我一起交流切磋!