1.当创建子类对象时,不管使用子类哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用super去指定使用父类的哪个构造器完成对父类的初始化工作,否则编译不会通过。
2.java中所有类都是Object的子类,Object类是所有类的基类
3.父类构造器的调用不仅仅限于直接父类,将一直追溯到Object类。
在Java中使用子类构造器的时候默认会调用父类构造器,如果父类没有提供无参构造器,则需要用super指定使用父类的构造器完成对父类的初始化工作,如果未完成对父类的初始化工作会报错!
通过以下代码加深对继承中调用子类构造器的过程理解:
class Main{ public void static main(String[] args){ Son son = new son(); } } class father{ father(){ System.out.println("父类无参构造器被调用!"); } father(String name){ System.out.println("父类有参构造器被调用"); } } class Son extends father{ Son(){ System.out.println("子类无参构造器被调用"); this("test"); } Son(String name){ super();//该语句不写被隐藏同样会调用父类无参构造器。 System.out.println("子类有参构造器被调用"+name); } } //输出结果自己运行以下即理解了继承中调用子类构造器的作用机制