【发布时间】:2015-02-11 19:58:20
【问题描述】:
假设我有以下代码
public class SuperClass {
protected int super_class_value;
public SuperClass (int value) {
this.super_class_value = value;
}
}
public class Subclass extends SuperClass {
protected int subclass_value;
public SubClass(int super_class_value, int subclass_value) {
super(super_class_value);
this.subclass_value = subclass_value;
}
}
但是,现在我希望能够将 SuperClass 对象传递给 SubClass 构造函数。我该怎么做?
public SubClass(SuperClass super_class, int subclass_value) {
//What do I do here?
this.subclass_value = subclass_value;
}
基本上,我想做这样的事情......
public SubClass(SuperClass super_calss, int subclass_value) {
super(super_class.super_class_value);
this.subclass_value = subclass_value;
}
但如果 SuperClass 更复杂,我不想将每个值都添加到 super() 调用中。相反,我想简单地传入一个已经存在的对象,并将其用作超类。
我想这样做......
public SubClass(SuperClass super_class, int subclass_value) {
super(super_class);
this.subclass_value = subclass_value;
}
但我不确定这是否允许?
如果我将构造函数添加到 SuperClass 定义中,似乎我可以执行上述操作。但那会是什么样子呢?
public class SuperClass {
protected int super_class_value;
public SuperClass (int value) {
this.super_class_value = value;
}
public SuperClass (SuperClass super_class_object) {
//What is done here?
}
}
【问题讨论】:
-
目前您的代码看起来不错...您到底想用
super_class参考做什么?? -
你不能像
super(super_class_value);那样在子类中传递它吗? -
为什么要传递超类对象?
-
当您只有
SuperClass的实例而不是为超类传递int时,您是否想问如何将int传递给超调用?跨度> -
作为对您当前更新的回复,我想简单地传入一个已经存在的对象,并将其用作超类。这实际上是不可能的.您可以做的是在您的超类中创建一个构造函数,该构造函数使用传入的引用复制自身。
标签: java inheritance subclassing object-construction