我注意到,当我将方法定义为抽象时,子类的签名需要与它兼容.这让我有机会在子类的签名中使用类型检查.
如果我将父方法定义为具有默认实现的具体方法,那么我可以覆盖父方法而不遵守其接口.
在存在合适的默认实现的情况下,我倾向于使用第二种方法.但我是否让自己陷入困境?
对我来说,"抽象"的使用可能是如此限制似乎很奇怪,所以我想知道我是否遗漏了一些东西......
注意 - 我看到类似的问题已经被问到与其他语言相关,但不是PHP.
这是一个非常广泛的问题,但用几句话来说:
如果你不尊重接口 - 它会创建脆弱的设计,因为即使根据定义,每个子节点都应该支持所有的祖先接口 - 你打破它,然后定义不兼容的接口.
有一个很好的法律:http://en.wikipedia.org/wiki/Liskov_substitution_principle
此外,它通常是一个标志,你应该更喜欢委托而不是继承.
归档时间: |
|
查看次数: |
806 次 |
最近记录: |