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的构造函数需要使用参数来初始化对象的属性。