多重继承(MI)是一个编程概念,允许一个类从多个父类继承。虽然它看起来是一种组合功能的便捷方法,但它常常会导致维护噩梦。
1.组合优于继承:
尽可能考虑使用组合而不是继承。组合允许您组合具有不同功能的对象,而不会产生 MI 的复杂性。
2.恐惧钻石:
MI 可以创建“恐惧钻石”场景,其中一个类继承自两个继承自共同祖先的类。这可能会导致方法解析中的歧义和冲突。
3.虚拟继承的歧义:
在对象层次结构中,理想的继承图应该是树,而不是图。从共享相似方法的多个接口继承时,MI 可能会产生歧义。
尽管有缺点,MI 在某些情况下可能是合适的:
1.不相关的类:
如果所讨论的类完全不相关并且服务于不同的目的,那么 MI 可以简化实现。
2.私有继承:
私有继承可用于实现实现细节,而无需将其公开,从而降低与 MI 相关的风险。
3. C 惯用法:
一些 C 惯用法,例如策略,利用 MI 来实现特定的设计目标。
虽然 MI 是一个方便的选项,但应该使用它谨慎行事。大多数时候,组合或单一继承是首选,以避免与 MI 相关的复杂性和陷阱。准备好在代码审查中捍卫您对 MI 的使用,并尽可能考虑替代方法。
以上是我应该避免代码中的多重继承吗?的详细内容。更多信息请关注PHP中文网其他相关文章!