解决办法: A:在父类中加一个无参构造方法 B:通过使用super关键字去显示的调用父类的带参构造方法 注:子类通过this去调用本类的其他构造方法,子类中一定要有一个去访问了父类的构造方法,否则父类数据就没有初始化。this(…)或者super(…)必须出现在第一条语句上。如果不是放在第一条语句上,系统会自动添加,造成对父类成员变量的多次初始化。
class Father { public Father(String name) { System.out.println("Father的带参构造方法"); } } class Son extends Father { public Son() { super("随便给"); System.out.println("Son的无参构造方法"); } public Son(String name) { this();//通过this来调用本类的构造,以间接调用父类带参构造 System.out.println("Son的带参构造方法"); } } class ExtendsDemo7 { public static void main(String[] args) { Son s = new Son(); System.out.println("----------------"); Son ss = new Son("林青霞"); } } /* 输出结果: Father的带参构造方法 Son的无参构造方法 ---------------- Father的带参构造方法 Son的无参构造方法 Son的带参构造方法 */