您的位置:首页 > 其它

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

2015-09-24 23:47 225 查看
当子类调用无参构造函数时,该子类的无参构造函数在第一句默认调用了父类的无参构造函数,即下面两端代码是等价的

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");
}
}


最后再说一句,子类不会继承父类的构造方法,更没有子类重写父类的构造方法一说。子类和父类的名称不同,而方法重写需要方法名相同,显然,这一点就已经否决了子类可以重写父类的构造方法的说法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: