这是一个关于java子类的非常基本的问题,我还是不明白......
假设我有一个包含三个字段且仅包含默认构造函数的超类:
public class Superclass {
public int a;
public int b;
public int c;
}
我想添加一个字段x。我无法改变Superclass
,所以我创建一个子类:
public class Subclass extends Superclass {
public int x;
public Subclass(Superclass s) {
super();
// what to do??
}
}
我现在想生成一个Subclass
来自现有的对象Superclass
object:
Superclass s = new Superclass();
s.a = "a";
s.b = "b";
Subclass sc = new Subclass(s);
sc.x = "x";
这样我仍然可以访问sc.a
, sc.b
etc.
如何最好地做到这一点,而不需要在子类的构造函数中“手动”分配所有这些字段?
您必须在基类构造函数或子类中为变量赋值。
您可以在子类中声明参数化构造函数,以将值分配给超类中的变量
class Subclass extends Superclass {
public int x;
public Subclass(int a,int b, int c,int x) {
super();
this.x = x;
this.a=a;
this.b=b;
this.c=c;
}
}
或者您可以在 BaseClass 和子类中声明一个参数化构造函数,而不是调用super()
,调用参数化构造函数super(a,b,c)
class Superclass {
public int a;
public int b;
public int c;
public Superclass(int a, int b, int c) {
this.a = a;
this.b = b;
this.c = c;
}
}
class Subclass extends Superclass {
public int x;
public Subclass(int a,int b, int c,int x) {
super(a,b,c);
this.x = x;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)