下面的代码无法运行,我不明白原因,为什么会这样?如果我能找到一种方法在另一个重写的构造函数中调用构造函数?
尽管如此,我知道可以有一个解决方案,将公共(public)初始化代码放在类函数中。所以,请原谅我这个愚蠢的问题。
Public AClass extends BClass {
AClass(Context c) {
super(c);
//below has common init code
//init data and some operations
// other operations
}
AClass(Context c, Attr a) {
super(c, a);
this(c) // error
}
}
另外,下面的也不起作用,
AClass(Context c, Attr a) : this(c) {
super(c, a);
}
非常感谢您的善意帮助。
最佳答案
根据 BClass 构造函数的作用,以下内容可能有效:
public AClass extends BClass {
AClass(Context c) {
this(c, (Attr) null);
// below has common init code
// init data and some operations
// other operations
}
AClass(Context c, Attr a) {
super(c, a);
}
}
您只能从构造函数中调用一个构造函数。你不能调用this
(另一个构造函数)和super
(父类(super class)的构造函数),并且你不能调用this
或 super
多次。并且您只能将它们作为构造函数的第一条语句调用。
关于java构造函数在实现中调用另一个被重写的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20741969/