面试题答案
一键面试- 重写calculateArea方法的必要性:
- Shape类是一个抽象类,其中定义了抽象方法
calculateArea
。抽象方法只有方法声明,没有方法体,它的具体实现需要由继承自该抽象类的子类来完成。 - Circle类继承自Shape类,根据Java的规则,非抽象子类必须为继承的抽象方法提供具体的实现。如果Circle类不重写
calculateArea
方法,那么Circle类也必须被声明为抽象类,这样就无法创建Circle类的实例对象。通过重写calculateArea
方法,Circle类才能给出计算自身面积(圆面积)的具体逻辑,即Math.PI * radius * radius
,从而使Circle类成为一个可实例化的具体类,能够满足实际应用中计算圆面积的需求。
- Shape类是一个抽象类,其中定义了抽象方法
- @Override注解的作用:
- 编译器检查:
@Override
注解用于告知编译器,被注解的方法意图是重写父类中的方法。编译器会进行检查,如果父类中不存在对应的方法声明,编译器会报错。例如,如果在Circle类中误写方法名,如public double calculateAreaa()
(方法名拼写错误)并使用@Override
注解,编译器会发现父类Shape中没有calculateAreaa
方法,从而提示错误,帮助开发者发现代码中的错误。 - 增强代码可读性:从代码阅读角度,
@Override
注解明确标识了该方法是重写自父类的方法,使得代码结构更加清晰,便于其他开发者理解代码的继承和重写关系,提高代码的可维护性。
- 编译器检查: