多继承(同时继承多个父类的状态与实现)会破坏正交性:多个父类可能携带同名方法或字段,产生冲突(如菱形继承问题),语言必须引入复杂的消解规则,类之间耦合加深。而实现多个接口(Java 的接口默认不含状态)基本不破坏正交性——接口只声明能力契约,多个契约可以独立叠加;Java 8 默认方法引入后若出现冲突,编译器要求显式覆写,把歧义暴露给程序员而非隐藏规则。

委托与继承的区别:继承是"is-a",子类复用父类实现但同时继承其脆弱性——父类改动可能波及所有子类(脆弱基类问题),且继承关系编译期固定。委托是"has-a",把行为交给持有的对象完成,关系可在运行期替换,组合更灵活、耦合更低,这也是"组合优于继承"设计原则的依据。

追问方向:菱形继承在 C++ 中如何解决(虚继承)?Java 接口默认方法的冲突规则?

(约 330 字)