Oop 是不是;“组成重于继承”;也意味着;“界面上的合成”;?
我知道继承意味着“是一种”关系,它也可以有多态行为。但是,例如,在Java中,从父类扩展和实现接口之间的区别在于接口只有要实现的方法。它们都需要子类依赖于父类,并需要引导类相互耦合 因此,除了从父类扩展之外,如果可能的话,还应该避免实现类的接口吗?组合优先于继承原则指的是您试图重用代码的情况 该原则说,通过组合重用代码比通过继承重用代码更好Oop 是不是;“组成重于继承”;也意味着;“界面上的合成”;?,oop,inheritance,language-agnostic,composition,Oop,Inheritance,Language Agnostic,Composition,我知道继承意味着“是一种”关系,它也可以有多态行为。但是,例如,在Java中,从父类扩展和实现接口之间的区别在于接口只有要实现的方法。它们都需要子类依赖于父类,并需要引导类相互耦合 因此,除了从父类扩展之外,如果可能的话,还应该避免实现类的接口吗?组合优先于继承原则指的是您试图重用代码的情况 该原则说,通过组合重用代码比通过继承重用代码更好 它不适用于接口,因为接口不实现将被重用的代码(至少在Java 8:)。接口是允许您反转依赖关系的主要机制之一,因此实现可以依赖于抽象,而不是相反。因此,如果
它不适用于接口,因为接口不实现将被重用的代码(至少在Java 8:)。接口是允许您反转依赖关系的主要机制之一,因此实现可以依赖于抽象,而不是相反。因此,如果您遵循坚实的原则,接口应该优先于直接实例化 与任何其他语言功能一样,它也可能被滥用或过度使用。但当用于依赖项反转时,它基本上通过使程序的行为易于扩展而增强了程序的“组合” 当然,如果您有足够的创造力,您可能会想出如何在不使用接口的情况下进行依赖项反转。长期以来,没有接口的语言一直在进行依赖倒置。stdio/iostreamapi就是最好的例子之一。它允许为新字符设备编写设备驱动程序,而无需重新编译写入标准输出的程序。否则,每当有人提出一个新的行打印机,终端或串行调制解调器,你必须重新编译几乎每一个程序在你的操作系统