Eclipse错误:Implicit super constructor ClassName is undefined for default constructor. Must define an explicit constructor

 public class Test01 {

     private String name;
     private int age;

     public Test01(String name){

         this.name = name;
     }

     private void func1(){

         //private 同一个类可以调用
         String str;
         str = this.name;

         System.out.println(str);
     }

     public static void main(String []args){

         Test01 t = new Test01("Gient");

         t.func1();
     }
 }
 public class Test03 extends Test01{

 }

  上面代码会报错: Implicit super constructor Test01() is undefined for default constructor. Must define an explicit constructor

  因为,Test03在继承Test01时,Test03并没有写构造函数,那么就会使用默认的构造函数,就会调用没有参数的super(),然而,在父类Test01中的构造函数是带有参数的。

  解决办法有两种:

    1、父类Test01中的构造函数不要带有参数

    2、子类Test03中添加一个构造函数,如下:

    

 public class Test03 extends Test01{

     public Test03(String name) {

         super(name);
     }
 }

相对来说,第二种方法更妥当一点,因为父类Test01的构造函数需要使用参数来初始化对象的属性。

参考文献:https://*.com/questions/1197634/java-error-implicit-super-constructor-is-undefined-for-default-constructor

上一篇:java12 - 正则表达式


下一篇:iOS开发UI篇—popoverController简单介绍