java中为什么父类必须有无参构造方法才能被子类继承?

来源:百度知道 编辑:UC知道 时间:2024/05/31 08:34:25
定义类时如果不明确写出构造方法那么就会默认一个,那为什么当子类继承父类的时候就又要明确写出了呢?
请讲述一下这个机制的原理

不一定要明确写出的。
因为创建子类对象调用子类的构造方法的时候会先调用父类的构造方法,在子类的构造方法中调用父类的构造方法是用super(),如果没有写super(),则默认调用父类的无参构造方法。
但此时如果父类写了有参的构造方法,则必须在子类的构造器中写明
super(父类构造器参数);

你在Xx类里定义了一个带参数的构造方法,那么这个Xx类就没有无参数的构造方法了。

子类在继承父类时,如果没有相同的带参构造方法,那么他就需要在其构造方法中明确的通过super()调用父类的带参构造方法,否则构造不出父类,从而也构造不出他自己了。

你如果在父类中写个不带参数的构造方法,就可以不用实现父类的带参构造方法了。

不一定,如果父类中有多个构造方法的话,不需要明确指出无参构造方法。
解释:继承关系中子类中的方法必须调用父类的构造方法。如果父类中只有一个有参的构造方法,在子类的构造方法必须调用,而且是子类的构造方法第一句话必须是调用父类的有参构造方法,否则编译器会提示错误的。如果父类中有无参的构造方法,没有写的话,会自动调用的,也就不会报错。

java中为什么父类必须有无参构造方法才能被子类继承?

这种说法是错误的!
public class Father {
public Father(String str) {
System.out.println(str);
}
}

public class Son extends Father {
public Son() {
super("F");
}
}

同意以上观点,所以再定义类的时候,最好先加个空的构造方法,