面试题答案
一键面试这种理解是不正确的。
Java中抽象类在继承体系下构造函数调用的原理
- 构造函数调用顺序:在Java中,当创建一个子类实例时,会首先调用其父类的构造函数,然后再调用子类自身的构造函数。这是因为子类对象包含了父类对象的部分,需要先初始化父类部分。
- 使用
super
关键字:在子类构造函数中,通过super
关键字来显式调用父类的构造函数。如果子类构造函数中没有显式调用super
,Java编译器会自动在子类构造函数的第一行插入super()
,调用父类的无参构造函数。如果父类没有无参构造函数,那么子类构造函数就必须显式调用父类合适的构造函数,否则会编译错误。
可能存在的误区
- 认为可以跳过父类构造函数:如题目中所认为的直接调用子类构造函数而忽略父类构造函数是错误的。父类的初始化是子类初始化的基础,必须先完成。
- 对
super
关键字的误解:有些人可能不理解super
关键字的作用和使用规则,不知道在子类构造函数中需要恰当使用它来调用父类构造函数。同时,可能会忘记如果不显式调用super
,编译器会自动插入对父类无参构造函数的调用,而当父类没有无参构造函数时就会导致问题。