以下代码无法编译:
class Super { int i = 0; Super(String text) { i = 1; } } class Sub extends Super { Sub(String text) { ------------LINE 14------------ i = 2; } public static void main(String args[]) { Sub sub = new Sub("Hello"); System.out.println(sub.i); } }
但是当我super(text)
在第14行添加时,它工作正常.为什么会这样?
没有显式调用超类构造函数的构造函数将被添加一个对无参数构造函数的隐式调用(就好像该super();
语句被添加了它的第一个语句).
在您的情况下,由于超类具有带参数的构造函数,因此它没有无参数构造函数,因此super();
无法传递编译,您必须super(text)
显式调用.