欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

相关标签: java