(1)一个类如果不声明构造函数会生成一个默认的无参构造函数.如果声明了构造函数(无论有参还是无参),就不会生成默认的构造函数.一个类可以有一个或者多个构造函数,包括有参构造和无参构造.所以一般一个类的构造函数有三种情况:无参 | 无参+有参 | 有参
(2) 在继承关系中,子类的所有构造函数(包括无参构造函数(默认构造函数),有参构造函数等),如果不显式声明调用哪种super,那么都会默认调用super(),即都会默认调用父类的无参构造函数(默认构造函数)。而,如果父类此时没有无参构造函数存在的话,子类或者子类的构造函数就会报错.提示 Must explicitly invoke another constructor(必须显式的调用另一个构造参数).解决方法:1. 显式调用父类显式声明的构造函数之一 2. 在父类中增加无参构造函数。
(3) 在继承关系中,当使用new一个类时,程序的执行顺序为:首先执行父类的构造函数方法,再执行自身的构造函数方法,这个执行顺序不可更改,否则报错或不能运行。在深度继承关系中,即当存在C继承B,B继承A,或者更多层继承时,首先执行最上层的构造函数,再依次顺着继承链传递下去,一直到创建对象的那个类。例如:我们声明C对象时,调用的是C的构造函数c,构造函数c调用的是父类B的构造函数b,构造函数b调用的是父类A中的构造函数a,那么执行结果就是:a => b => c 。
参考地址:https://blog.csdn.net/qiumengchen12/article/details/44829907