一个狠奇怪的小问题,大家来看一下啊!!!

来源:百度知道 编辑:UC知道 时间:2024/05/03 01:53:26
class Aa {
public Aa(String a,String b) { }
}
public class Bb extends Aa {
public Bb(String a,String b) {
super(a,b);//*
}
public static void main(String args []) {
Aa a = new Aa("Hi","Tom");
Aa b = new Bb("Hi","Bart");
}
}

如果去掉super(a,b);则会出现编译错误,提示找不到Aa中的无参构造函数
此时要么加super(a,b),要么给Aa写无参构造函数。

在java中 如果你没有写构造函数呢 他就会给你添加一个 里面什么内容都没有 也没有参数 如果你有呢 他就不在给你添加了 当你的Ba继承Aa时会默认的调用父类的也就是Aa的无参构造函数 所以必须要象你上面说的那么来

因为你extends后,Bb的构造方法默认第一句是super Aa 的无参构造方法!