日期:2014-05-20  浏览次数:20872 次

菜鸟遇到一个优点混乱的问题——java继承中的构造方法
class SuperClass{
private int n;

SuperClass(){
print("SuperClass().");
}
SuperClass(int n){
print("SuperClass("+n+").");
this.n=n;
}
}

class SubClass extends SuperClass{
private int n;

SubClass(){
this(100);
//super(100);
print("SubClass().");

}

SubClass(int n){

print("SubClass("+n+").");
this.n=n;
}
}
public class TestSuperSub {
public static void main(String[] args) {
SubClass sub=new SubClass();
}

}


为什么在用SubClass()方法中的this(100)调用SubClass(int n)构造器的时候,程序不再调用SuperClass中的SuperClass(){print("SuperClass().");}? 不是每次调用子类构造器的时候,都会调用父类的构造器吗?
java 继承 构造器 super this

------解决方案--------------------
肯定会调用SuperClass()构造器,楼主看错了吧?
另外,应该是System.out.print(),直接print()肯定不行
------解决方案--------------------
SuperClass().
SubClass(100).
SubClass().

这是正确的调用结果.
------解决方案--------------------
①创建一个对象,只会调用一个构造器来初始化对象,假如可以调用多个构造器,会乱套的;
②“不是每次调用子类构造器的时候,都会调用父类的构造器吗?”SuperClass(int n),难道就不属于父类的构造器了?