【发布时间】:2020-12-04 00:54:25
【问题描述】:
假设我们有三个类,Parent、Child1 extends Parent implements ISomething 和 Child2 extends Parent implements ISomethingElse。现在,我想创建Child3,这将是extends Child1 或Child2,具体取决于Child3 收到的内容。
Child3 构造函数是这样的:
public <T extends Parent> Child3(T child) {}
如何让Child3 知道要扩展哪个类?
(不要回答Parent。假设扩展Parent 会破坏代码并且Parent 没有实现任何东西)
【问题讨论】:
-
听起来你想要一个“创作模式”。常见的例子有
Builder、Factory、AbstractFactory等。 -
这在 Java 中是不可能的。考虑定义类
Child3和Child4分别扩展Child1和Child2。如果您需要创建这些类的对象,请动态定义一个工厂方法,该方法要么返回一个实例,要么返回另一个实例。 -
但是如果我需要从
Parent覆盖Child3中的方法怎么办?有没有办法覆盖不同类的方法?