【发布时间】:2013-05-15 02:50:52
【问题描述】:
我希望我能就这个问题得到一些澄清。所以类层次结构如下所示: AbstractClass、ConcreteClass1 和 ConcreteClass2。 ConcreteClass1 扩展 AbstractClass 和 ConcreteClass2 扩展 ConcreteClass1:
ConcreteClass1 中的构造函数如下所示:
private final AbstractClass parent;
public ConcreteClass1( int id, AbstractClass aParent )
{
super( id );
parent = aParent;
}
我想知道这在什么情况下可能有用。除非为 aParent 参数传递 null,否则我看不到如何实例化 ConcreteClass1。 ConcreteClass2 中使用了类似的构造函数(即它也有一个 AbstractClass 类型的参数)。
这可能是一个合理的设计吗?
【问题讨论】:
-
我看不出有什么困扰你。例如,这正是 SWT 小部件类的工作方式。
-
这完全取决于您的域。在类之间建立父子关系可能很有用,但在技术上不需要它来使继承工作。
-
对我来说看起来像一个树结构。 ConcreteClass1 对象引用了另一个 AbstractClass 对象。
-
为什么你认为只有aParent参数为null才能实例化ConcreteClass1?这可能有助于我们了解您的问题
-
@MarkoTopolnik 感谢您的快速回复,我没有使用过 SWT 小部件,所以我不熟悉它,我会检查一下。
标签: java inheritance constructor abstraction