关于子类和父类的构造方法的问题

当子类调用无参构造函数时,该子类的无参构造函数在第一句默认调用了父类的无参构造函数,即下面两端代码是等价的

public class Child extends Parent {
	Child() {

	}
}

public class Child extends Parent {
	Child() {
		super();
	}
}

所以,如果子类拥有无参的构造函数,父类一定要有一个无参的构造函数,或者在子类的无参构造函数中第一句调用父类的其他构造函数。


下面的子类的构造方法会报错,因为子类中有无参的构造方法,而父类中没有无参的构造方法,当调用子类的无参构造方法时,系统会默认先调用父类的无参构造方法,而此时系统找不到父类的无参构造构造方法,所以会报错

public class Parent {
	Parent(String name) {

	}
}
public class Child extends Parent {
	Child() {
	}
}



解决方法1:给父类添加一个无参的构造方法

<span style="font-size:18px;">public class Parent {
	Parent() {

	}
   //此处,父类也可以不用显式声明无参构造方法
 }</span>
<span style="font-size:18px;">public class Child extends Parent {
	Child() {
	}
}</span>


解决方法2:在子类的无参构造方法中显式调用父类中的有参构造方法

public class Parent {
	Parent(String name) {

	}
}

public class Child extends Parent {
	Child() {
		super("name");
	}
}


最后再说一句,子类不会继承父类的构造方法,更没有子类重写父类的构造方法一说。子类和父类的名称不同,而方法重写需要方法名相同,显然,这一点就已经否决了子类可以重写父类的构造方法的说法


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值