实际问题中,JAVA子类的构造函数有时会出现无法编译通过的情况,如:
class Fu{
public int age;
Fu(int age) {
this.age = age;
}
}
class Zi extends Fu{
public int age;
Zi(int age) {
this.age = age;
}
}
则无法编译通过!
因为构造函数不能继承,只是调用而已。
如果父类没有无参构造函数
创建子类时,不能编译,除非在构造函数代码体中第一行,必须是第一行显式调用父类有参构造函数
如下:Zi(int age) {
如果父类没有无参构造函数
创建子类时,不能编译,除非在构造函数代码体中第一行,必须是第一行显式调用父类有参构造函数
如下:Zi(int age) {
super();
this.age = age;
}
如果不显示调用父类有参构造函数,系统会默认调用父类无参构造函数super();
但是父类中没有无参构造函数,那它不是不能调用了。所以编译就无法通过了。
如果不显示调用父类有参构造函数,系统会默认调用父类无参构造函数super();
但是父类中没有无参构造函数,那它不是不能调用了。所以编译就无法通过了。
所以必须在父类中增加无参构造函数。