1. 程式人生 > >java 繼承重寫注意

java 繼承重寫注意

繼承要記住滿足裡式替換原則(LSP)

LSP: 子類能夠出現的地方, 父類一定可以替換出現, 並且不影響程式的執行, 外界無法判斷是使用了父類還是子類
但是! 子類出現的地方, 父類不一定可以替換

如何遵守LSP

子類可以有自己的特性

子類可以相對於父類有自己的特殊性, 但不應該講父類的方法修改得面目全非
比如說:(具體程式碼參考https://blog.csdn.net/BeyondHaven/article/details/6826013)
父類是矩形 , 擁有設定長寬的方法, 子類是正方形, 只能設定邊長 , 所以這違背了LSP

子類必須完全實現父類的方法

覆蓋或實現父類的方法時輸入引數的約束可以被放大, 不可以被縮小

如果約束縮小 , 父類替換出現時會出現取值在子類約束之外 但在父類約束之內的情況

覆蓋或實現父類的方法時輸出結果可以被縮小, 不可以放大

繼承的風險

  • 繼承是入侵性的(只要繼承,就必須擁有父類的所有屬性與方法);
  • 降低了程式碼的靈活性(子類擁有了父類的屬性方法,會增多約束);
  • 增強了耦合性(當父類的常量、變數、方法被修改時,必需要考慮子類的修改)。

參考連結