A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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()
怎么修改一下?

5 个回复

倒序浏览
子类在初始化之前,要先完成父类的初始化,优先访问父类的空参构造,你的父类Parent1里设定了一个带参构造,系统就认定父类里没有空参构造,就会报错。
修改办法:1,在父类里加一个空参构造:public Parent1() {}
                2.在子类Parent2的带参构造内加一条语句:super(String s);让构造器强制访问父类带参构造而不是空参构造。
回复 使用道具 举报
parent1少了个空参的  写了有参的构造 java就不会自动给补齐空参的构造了
回复 使用道具 举报
黑猫的消失 发表于 2016-6-11 21:54
子类在初始化之前,要先完成父类的初始化,优先访问父类的空参构造,你的父类Parent1里设定了一个带参构造 ...

感谢大神!!还是我的概念不牢
回复 使用道具 举报
  1. class Parent1 {
  2.        
  3.         public Parent1() {
  4.                 super();
  5.                
  6.         }

  7.         Parent1(String s) {
  8.                 System.out.println(s);
  9.         }
  10. }

  11. class Parent2 extends Parent1 {       

  12.         public Parent2(String s) {
  13.                 super(s);
  14.                
  15.         }

  16.         Parent2() {
  17.                 // super();
  18.                 System.out.println("parent2");
  19.         }
  20. }

  21. public class Child extends Parent2 {
  22.         public static void main(String[] args) {
  23.                 Parent2 parent2 = new Parent2("zhangsan");
  24.                 Child child = new Child();
  25.         }
  26. }
  27. //你可以这样试一下!
复制代码
回复 使用道具 举报
阿姆1Q84 发表于 2016-6-12 11:22
感谢大神!!还是我的概念不牢

并不是大神,这几天刚上面向对象的课- -
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马