** lsp全稱為黎克特制(liskov )替代原則——liskov substitution principle ,是物件導向最重要的幾大原則之一。**
1,行為子型別
其含義是:
子型別可以增加方法,但不可刪
子型別需要實現抽象型別中的所有未實現方法
子型別中重寫(override)的方法 必須有相同或子型別的返回值
子型別中重寫(override)的 方法必須使用同樣型別或者父型別的引數
子型別中重寫(override)的方法不能丟擲額外的異常
除此之外,還需要遵守一些原則,雖然編譯器不會強制我們遵守,但是如果想要寫出復用性高的**要做到:
子型別擁有相同或更強的不變數
子型別擁有相同或更弱的前置條件
子型別擁有相同或更強的後置條件
逆變與協變
協變:父型別→子型別:越來越具體
逆變:子 型別→父型別:越來越抽象
泛型萬用字元 < ?> 例如 list< ?>.
而 list< number>是 list<?>的子型別
使用情景:
編寫乙個可以使用 object 類中提供的功能來實現的方法。
當**使用泛型類中不依賴於型別引數的方法時。例如, list.size() 或者list.clear()
事實上,class< ?>在程式設計中經常被使用,因為class中的大多數方法不都不需要依賴於泛型識別符號< t>
LSP資訊檢視
lsp,和spi不是同乙個意思,但多數情況下他們都是指同乙個東東,還不知道lsp是啥東東的先看看下面這段廢話吧。spi service provider inte ce,服務提供者介面 是winsock2提供的一項新特性,通過它可以借助於實現乙個分層服務提供者對現有的傳輸服務提供者進行擴充套件。wi...
Hadoop知識彙總
hadoop的兩大功能 海量資料儲存和海量資料分析 1 hdfs 分布式檔案系統海量資料儲存 3 yarn 資源排程管理集群 hdfs工作機制 基於namenode和datanode 1 namenode 響應客戶端的請求 負責維護整個hdfs檔案系統的目錄樹,以及每乙個路徑 檔案 所對應的bloc...
博弈知識彙總
顯然,如果n m 1,那麼由於一次最多只能取m個,所以,無論先取者拿走多少個,後取者都能夠一次拿走剩餘的物品,後者取勝。因此我們發現了如何取勝的法則 如果n m 1 r s,r為任意自然數,s m 那麼先取者要拿走s個物品,如果後取者拿走k m 個,那麼先取者再拿走m 1 k個,結果剩下 m 1 r...