面试题答案
一键面试- 构造函数执行顺序:
- 当创建
Dog
对象时,首先会调用Animal
的构造函数。这是因为在创建派生类(Dog
)对象时,需要先初始化其基类(Animal
)部分。在初始化基类部分完成后,才会调用Dog
的构造函数。所以执行顺序是Animal
构造函数 ->Dog
构造函数。
- 当创建
- 对多态性的影响:
- 在构造函数执行期间,多态性并不完全生效。当
Animal
构造函数执行时,对象被视为Animal
类型。此时,即使Dog
类重写了speak
函数,在Animal
构造函数内部调用speak
函数(如果有这种情况),调用的也是Animal
版本的speak
函数(因为此时对象还未完全构造为Dog
类型)。只有当Dog
构造函数执行完毕,对象才完整地成为Dog
类型,多态性才能正常发挥作用,即通过Animal
指针或引用调用speak
函数时,会调用Dog
类重写的speak
函数。
- 在构造函数执行期间,多态性并不完全生效。当