Java继承构造函数问题
程序员文章站
2022-05-14 09:06:27
...
分析是否能编译通过?如果编译不通过,为什么?如何修改? 修改后,结果是多少?
class Person{
public Person(int x){
System.out.println("person run"+x);
}
}
class Son extends Person{
public Son(int x){
System.out.println("son run"+x); //1.【 】
}
}
public class ExtendsDemo{
public static void main(String[] args){
Son son = new Son(5);
}
}
不能,因为子类的构造方法执行时一定会先调用父类的构造方法(从而保证对继承的成员变量初始化),如果子类的构造方法没有指定哪个构造方法,系统会自动的调用父类的默认构造方法,Person父类中有一个有参构造函数就不会提供默认的无参构造函数,在Person类中添加一个无参构造函数。
class Person{
Person(){}
public Person(int x){
System.out.println("person run"+x);
}
}
结果是 son run5
上一篇: c#继承与构造函数
下一篇: C++虚继承时的构造函数