从Java中的多个类继承(可能不使用接口)
假设我们有A、B和C类,我想继承所有这些类,还有另一个名为D的类,可以使用Java中的实现和接口来实现。但是假设我们不想使用这个简单的解决方案,那么在Java中,您能以任何其他方式从类A、B和C继承类D吗
(这个问题可能与设计模式有关,是在午餐讨论设计模式时向我的同事提出质疑后提出的)我认为除了使用多个接口之外,Java中没有其他方法可以实现多重继承
你可以在下面搜索框中键入要查询的问题!
假设我们有A、B和C类,我想继承所有这些类,还有另一个名为D的类,可以使用Java中的实现和接口来实现。但是假设我们不想使用这个简单的解决方案,那么在Java中,您能以任何其他方式从类A、B和C继承类D吗
(这个问题可能与设计模式有关,是在午餐讨论设计模式时向我的同事提出质疑后提出的)我认为除了使用多个接口之外,Java中没有其他方法可以实现多重继承
# 1 楼答案
Java中的类只能从一个类继承(如果不指定基类,则为
java.lang.Object
)。从三个类继承的唯一方法是,如果它们在一个链中相互继承:现在,您的
D
类继承自A
、B
和C
,但我怀疑这是您想要的Java中惯用的解决方案是实现多个接口,而不是继承多个类。如果必须“继承”实现,请使用组合而不是继承
# 2 楼答案
多重继承是不可能的
无论如何,您可以尝试用composition模拟这种继承
JB Nizet在提供的链接中回答了您的问题
# 3 楼答案
不是。多重继承的Java方法是使用接口
# 4 楼答案
答案是否定的。多个接口不是多重继承。接口和类是不同的概念
类是对象的定义,作为接口,对象必须遵循契约
# 5 楼答案
Java不支持
class D extends A, B, C
意义上的多重继承。正如拉纳鲁所提到的,实现这一点的首选方法是使用接口否则,你可以这样做:
实际上,
D
将通过C
间接扩展A
,B
# 6 楼答案
在JavaSE8中,接口的实现可能有限。这提供了一种实现的多重继承形式
作为多重继承的替代方案,内部类可以执行类似的工作
如果从
BaseOne
重写的方法需要调用BaseTwo
的方法,它们将需要对内部类的显式引用,但不是相反,并且Derived
字段是共享的