日期:2014-05-20 浏览次数:20715 次
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); } }
C(int c) { super(c); // 显式调用 A 的构造方法 this.c = c; }
------解决方案--------------------
你这编译能通过吗,都有一个构造方法了,子类又来一个构造方法,编译肯定报错的,没有明确调用哪个构造器
------解决方案--------------------
class C extends A { int c; String s; C(int c) { super(c);//添加这句,由于父类的构造方法不是默认构造方法,所以子类构造方法必须显示先调用父类的构造方法(没有父亲,哪来儿子) this.c = c; } B b = new B(2); }
------解决方案--------------------