黑马程序员技术交流社区
标题: 面向对象,代码遇到问题,求助大神 [打印本页]
作者: 阿姆1Q84 时间: 2016-6-11 21:43
标题: 面向对象,代码遇到问题,求助大神
class Parent1 {
Parent1(String s){
System.out.println(s);
}
}
class Parent2 extends Parent1{
Parent2(){
//super();
System.out.println("parent2");
}
}
public class Child extends Parent2 {
public static void main(String[] args) {
Child child = new Child();
}
为什么编译报错???
没有找到构造器Parent1()
怎么修改一下?
作者: 黑猫的消失 时间: 2016-6-11 21:54
子类在初始化之前,要先完成父类的初始化,优先访问父类的空参构造,你的父类Parent1里设定了一个带参构造,系统就认定父类里没有空参构造,就会报错。
修改办法:1,在父类里加一个空参构造:public Parent1() {}
2.在子类Parent2的带参构造内加一条语句:super(String s);让构造器强制访问父类带参构造而不是空参构造。
作者: lifeiwangyue 时间: 2016-6-11 22:04
parent1少了个空参的 写了有参的构造 java就不会自动给补齐空参的构造了
作者: 阿姆1Q84 时间: 2016-6-12 11:22
感谢大神!!还是我的概念不牢
作者: li6232876 时间: 2016-6-12 11:45
- class Parent1 {
-
- public Parent1() {
- super();
-
- }
- Parent1(String s) {
- System.out.println(s);
- }
- }
- class Parent2 extends Parent1 {
- public Parent2(String s) {
- super(s);
-
- }
- Parent2() {
- // super();
- System.out.println("parent2");
- }
- }
- public class Child extends Parent2 {
- public static void main(String[] args) {
- Parent2 parent2 = new Parent2("zhangsan");
- Child child = new Child();
- }
- }
- //你可以这样试一下!
复制代码
作者: 黑猫的消失 时间: 2016-6-12 21:04
并不是大神,这几天刚上面向对象的课- -
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |