【发布时间】:2016-04-21 10:13:22
【问题描述】:
我已经进行了一些搜索,但我要么没有问正确的问题,要么没有正确记住。无论如何,在 Java 中,我想知道是否可以将超类对象作为参数传递给子类,以及使该对象的数据可用于类的超类的最有效方法是什么。
代码示例:
public class superclass {
String myparm1;
String myParm2;
int myParmN;
public superclass(String p1, String p2, int pn)
{
this.myparm1 = p1;
this.myparm2 = p2;
this.myParmN = pn;
}
// other methods here
}
public class subclass extends superclass {
double b1;
double b2;
public subclass(superclass sc, double b1, double b2) {
// easy way to make sc data available to this class?
// Do I create a copy or clone method, or some other way?
// calling super(sc); wouldn't exactly work
this.b1 = b1;
this.b2 = b2;
}
}
如果我在超类中有一个构造函数 public superclass(superclass sc) { // assign sc properties to this properties, correct? },那么我可以简单地使用 super(sc);
【问题讨论】:
-
如果超类构造函数需要两个字符串和一个 int,则必须使用 2 个字符串和一个 int 调用 super()。没有办法解决它。如果
sc暴露了这3个值,则获取它们,并将它们apsss到super()。 -
你为什么不
super(sc.p1, sc.p2, sc.p3)? -
superclass(superclass sc)?那时调用super(sc)甚至都行不通,因为没有Object构造函数以superclass作为参数 -
拉斐尔。当然,对于少量的属性,这很容易。但是假设我的班级有大量的属性。 (当然,在那种情况下,这可能是糟糕的设计,但我离题了。)
-
@Macchtyn - 如果你的超类有大量的属性,封装复制它的细节就变得更重要了。您能否在
superclass类中添加一个复制构造函数,格式为您在问题末尾注明的形式——public superclass(superclass sc)?
标签: java inheritance