当子类不带有构造函数的时候,系统会自动给子类加入一个构造函数,并且在该函数中执行父类的无参构造函数。但假如我在子类中自己定义了一个构造函数,并且让该子类的构造函数不执行父类的无参构造函数。但是运行一遍程序,父类的构造函数还是被执行了啊?
测试程序如下:
父类:
public class ancester{
//父类的无参构造函数,继承的子类被实例化的时候这个无参构造函数总会被调用。
public ancester(){
System.out.println("ancester");
}
}
子类:
public class child extends ancester{
public child(){}
public static void main(String args[]){
child ch = new child();
}
}
输出:
ancester
------------------当父类不变,子类改成这样的时候:
public class child extends ancester{
public child(){
System.out.println("aaaa");
}
public static void main(String args[]){
child ch = new child();
}
}
输出:
ancester
aaaa
-------------------
难道说明了子类不管有啥构造函数,都是必须执行一次父类的构造函数?有没有啥技巧方法能避免将子类实例化的时候调用父类的无参构造函数? |
|