- Java code
class A { A(int i) { System.out.println("class A"); System.out.println("int i = " + i); }}class B { B(int i) { System.out.println("class B"); System.out.println("int i = " + i); }}class C extends A { int c; String s; C(int c) { this.c = c; } B b = new B(2);}public class Abc { public static void main(String[] args) { C c = new C(3); }}
------解决方案--------------------------------------------------------
因为 A 没有缺省构造方法,所以 C 的构造方法必须显式调用 A 的构造方法:
- Java code
C(int c) { super(c); // 显式调用 A 的构造方法 this.c = c;}
------解决方案--------------------------------------------------------
你这编译能通过吗,都有一个构造方法了,子类又来一个构造方法,编译肯定报错的,没有明确调用哪个构造器
------解决方案--------------------------------------------------------
- Java code
class C extends A { int c; String s; C(int c) { super(c);//添加这句,由于父类的构造方法不是默认构造方法,所以子类构造方法必须显示先调用父类的构造方法(没有父亲,哪来儿子) this.c = c; } B b = new B(2);}
------解决方案--------------------------------------------------------