class sub {
public int i = 0; public sub (String text){
i = 1 ;
}
}
public class test4 extends sub {
public test4 (String text){
i= 2;
}
public static void main (String []args){
test4 ts = new test4 ("Hello");
System.out.println(ts.i);
}
}
说是在test4构照函数的地方编译错误,是什么原因啊!
public int i = 0; public sub (String text){
i = 1 ;
}
}
public class test4 extends sub {
public test4 (String text){
i= 2;
}
public static void main (String []args){
test4 ts = new test4 ("Hello");
System.out.println(ts.i);
}
}
说是在test4构照函数的地方编译错误,是什么原因啊!
因为调用子类构造方法之前会先调用直接父类构造方法
默认是调用那个无参的构造方法
但是sub中又没有了无参的构造函数,在test4的构造方法中又写上super(text);
所以报错
子类构造方法的第一句一定是要调用父类的构造方法,
平时都是无参构造,super();可以省略
而父类有参的构造,子类在构造时一定要调用