定義:黎克特制替換原則,所有引用基類的地方必須能透明地使用其子類的物件。
//定義手槍抽象類
public abstract class abstractgun
//定義玩具槍抽象類
public abstract class abstracttoy
//實現手槍射擊
public class handgun extends abstractgun
}//實現機槍掃射
public class machinegun extends abstractgun
}//實現步槍射擊
public class rifle extends abstractgun
}//實現士兵類
public class soldier
public void killenemy()
}//測試實現
public class client
}
(1)**共享,減少建立類的工作量,每個子類都擁有父類的方法和屬性;
(2)提高**的重用性;
(3)子類可以形似父類,但又異於父類;
(4)提高**的可擴充套件性;
(5)提高產品或者專案的開放性。
(1)繼承是入侵性的;
(2)降低**的靈活性;
(3)增加耦合性。
軟體設計原則 黎克特制替換原則
liskov substitution principle 黎克特制替換原則 定義 如果對每一型別為t1的物件o1,都有型別為t2的物件o2,使得以t1定義的所有程式p在所有的物件o1都替換成o2時,程式p的行為沒有發生變化,那麼型別t2是型別t1的子型別。擴充套件 乙個軟體實體如果適用乙個父類的話...
軟體設計原則之黎克特制替換原則
黎克特制替換原則,在設計模式之禪一書中有兩種定義 綜合上面比較抽象的含義,換句話可能好理解些 其實就是對於同乙個程式p,把出現父類物件的地方,用子類去替換父類物件執行時,程式p功能或者說行為沒有改變,不會產生任何錯誤或異常 但是反過來就不行了,用父類去替換有子類的地方,由於子類可能擴充套件了一些功能...
軟體設計原則 黎克特制代換原則
黎克特制代換原則是物件導向設計的基本原則之一。黎克特制代換原則 任何基類可以出現的地方,子類一定可以出現。通俗理解 子類可以擴充套件父類的功能,但不能改變父類原有的功能。換句話說,子類繼承父類時,除新增新的方法完成新增功能外,盡量不要重寫父類的方法。如果通過重寫父類的方法來完成新的功能,這樣寫起來雖...