菜鸟遇到一个优点混乱的问题——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().");}? 不是每次调用子类构造器的时候,都会调用父类的构造器吗?
------解决方案--------------------肯定会调用SuperClass()构造器,楼主看错了吧?
另外,应该是System.out.print(),直接print()肯定不行
------解决方案--------------------SuperClass().
SubClass(100).
SubClass().
这是正确的调用结果.
------解决方案--------------------①创建一个对象,只会调用一个构造器来初始化对象,假如可以调用多个构造器,会乱套的;
②“不是每次调用子类构造器的时候,都会调用父类的构造器吗?”SuperClass(int n),难道就不属于父类的构造器了?