Java构造器的调用顺序

时间:2023-03-08 17:03:55

《Java编程思想》中对构造器的调用顺序有如下描述:

“构造器实际上是static方法,只不过该static声明是隐式的。”

“基类的构造器总是在导出类的构造过程中被调用,而且按照继承层次逐渐向上链接(注:向上转型继承图,基类位于上方,子类位于下方),已是每个基类的构造器都能得到调用。这样做是有意义的,因为构造器具有一项特殊任务:检查对象是否被正确构造。导出类只能访问他自己的成员,不能访问基类中的成员(基类成员通常是private类型)。只有基类的构造器才具有恰当的知识和权限来对自己的元素进行初始化。因此,必须另所有构造器都得到调用,否则就不可能正确构造完成对象。这正是编译器为什么要强制每个导出类部分都必须调用构造器的原因。在导出类的构造器主体中,如果没有明确指定调用某个基类构造器,它就会“默默”地调用默认构造器。如果不存在默认构造器,编译器就会报错(若某各类没有构造器,编译器会自动合成出一个默认构造器)。”