我注意到,當我將方法定義爲抽象方法時,子類的簽名需要與其兼容。這讓我有機會在兒童班的簽名中使用類型檢查。PHP抽象方法與默認方法
如果我將父方法定義爲具有默認實現的具體方法,則可以在不遵守其接口的情況下覆蓋父方法。
如果存在合適的默認實現,我傾向於使用第二種方法。但我是否讓自己陷入困境?
它只是似乎很奇怪,我認爲用「抽象」的也可以如此限制,所以我想知道如果我失去了一些東西......
注 - 我看到了類似的問題已經被問關於其他語言,但沒有太多的PHP。
我注意到,當我將方法定義爲抽象方法時,子類的簽名需要與其兼容。這讓我有機會在兒童班的簽名中使用類型檢查。PHP抽象方法與默認方法
如果我將父方法定義爲具有默認實現的具體方法,則可以在不遵守其接口的情況下覆蓋父方法。
如果存在合適的默認實現,我傾向於使用第二種方法。但我是否讓自己陷入困境?
它只是似乎很奇怪,我認爲用「抽象」的也可以如此限制,所以我想知道如果我失去了一些東西......
注 - 我看到了類似的問題已經被問關於其他語言,但沒有太多的PHP。
這是一個很廣泛的問題,但在幾句話:
如果你不尊重接口 - 它創造了脆弱的設計,因爲即使通過定義每個孩子都應該支持所有的祖先接口 - 你打破它定義了不兼容的接口。
有關於個好法:http://en.wikipedia.org/wiki/Liskov_substitution_principle
此外,它往往是一個跡象,你應該更喜歡代表團在繼承。
接口(或抽象類)強制與類的一致性。這是你和你繼承的班級之間的合同。當幾個人在編寫代碼時,這種一致性是關鍵,並且您想要可靠地交換類。
其實它只是一個很好的習慣,你尊重接口。 http://en.wikipedia.org/wiki/Liskov_substitution_principle – zerkms