java 子类的构造函数都必须要super();吗?

如果不是必须 那什么情况下要super啊?

不是必须
但是自动调用SUPER
什么时候必须调用SUPER
给你个例子
public class Father {
public String name;

public Father(String name) {
this.name = name;
}
}

public class Son extends Father{

public Son(String name) {
super(name);//必须调用,否则他会默认调用父类的无参构造函数,而父类的无参构造函数已经被有参的覆盖,所以找不到
}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-07
不是必须的,在构造函数中,如果第一行没有写super(),编译器会自动插入.但是如果父类没有不带参数的构造函数,或这个函数被私有化了(用private修饰).此时你必须加入对父类的实例化构造.而this就没有这个要求,因为它本身就进行实例化的构造.
第2个回答  2010-12-07
不是,必须的
如果子类的构造函数里面调用方法,或在初始化一些变量,需要先用super()
第3个回答  2010-12-07
子类重写了父类的方法,又想用父类该方法的时候
如:
class Parents{
Public Parents(){}
public void write(){
System.out.println("Parents");
}
}

class Children extend Parents{
Public Children(){}
public void write(){
System.out.println("Children");
super.write();
}
}