诸神缄默不语-个人CSDN博文目录
在Java中,@Override
是一个注解(Annotation),用于表明一个方法应该重写(Override)一个父类中的方法。
文章目录
- 1. 使用@override的优点
- 2. 简单的示例
1. 使用@override的优点
一、代码可读性方面
- 明确意图
- 当其他开发者阅读代码时,
@Override
注解能够清晰地表明这个方法是故意重写父类方法的。例如,在一个继承自Animal
类的Dog
类中,如果有一个makeSound
方法标记了@Override
,就可以很容易理解这个方法是在重写Animal
类中的同名方法。
- 当其他开发者阅读代码时,
- 遵循设计模式
- 在面向对象编程中,遵循里氏替换原则(Liskov Substitution Principle)1是很重要的。使用
@Override
有助于确保子类正确地重写了父类方法,符合这种设计原则。
- 在面向对象编程中,遵循里氏替换原则(Liskov Substitution Principle)1是很重要的。使用
二、编译时检查方面
- 防止错误拼写
- 如果方法名拼写错误或者参数列表不匹配父类中的方法,编译器会报错。例如,在
Animal
类中有一个eat
方法,子类Cat
中想要重写它,但是不小心写成了eatFood
(没有正确重写),如果没有@Override
注解,这个错误可能不会被及时发现,而有了这个注解,编译器就会提示错误。
- 如果方法名拼写错误或者参数列表不匹配父类中的方法,编译器会报错。例如,在
- 方法签名匹配检查
- 它还能确保方法的返回类型、异常类型等都符合重写的要求。比如父类方法返回
int
类型,子类重写方法不能返回double
类型;父类方法抛出IOException
,子类重写方法不能抛出更宽泛的未检查异常(如RuntimeException
)而没有特殊处理。
- 它还能确保方法的返回类型、异常类型等都符合重写的要求。比如父类方法返回
2. 简单的示例
class Shape {public void draw() {System.out.println("Drawing a shape");}
}class Circle extends Shape {@Overridepublic void draw() {System.out.println("Drawing a circle");}
}
在这个例子中,Circle
类中的draw
方法使用了@Override
注解来表明它是对Shape
类中draw
方法的重写。
里氏替换原则(Liskov Substitution Principle,LSP):面向对象设计的基本原则 ↩︎