Java 方法重写
在上一章中,我们介绍了继承的基本概念。继承是面向对象编程(OOP)的一项重要特性,它允许我们基于现有的类(称为基类)派生出新的类(称为子类)。子类能够自动继承基类的属性和方法,从而支持代码复用和层次化类结构的设计。
在继承机制中,如果子类定义了与父类同名的方法,则子类方法会覆盖父类中的对应方法。这一特性被称为方法重写(Method Overriding)。方法重写是实现运行时多态的关键技术,允许子类根据自身需求定制特定的行为逻辑。
什么是方法重写?
方法重写是指子类重新定义父类中已经定义的方法,以改变或扩展该方法的行为。重写后的方法:
- 具有与父类方法相同的方法签名(方法名和参数列表)
- 提供不同的方法实现
- 在运行时根据对象实际类型调用相应版本
✅ 以下是一个展示 Java 方法重写(Override)基本用法的简明实例:
java
复制
class Animal {
public void displayInfo() {
System.out.println("I am an animal.");
}
}
class Cat extends Animal {
@Override
public void displayInfo() {
System.out.println("I am a cat.");
}
}
class Main {
public static void main(String[] args) {
Cat tabbyCat = new Cat();
tabbyCat.displayInfo();
}
}
执行上面的程序后,运行结果:
I am a cat.
在上面的代码中,Animal
类定义了一个名为 displayInfo()
的方法。子类 Cat
通过重写该方法,提供了自己的实现。当我们创建 Cat
类的实例并调用 displayInfo()
方法时,输出结果显示的是子类中的实现,而不是父类中的实现。
方法重写的规则
1. 基本规则
- 方法签名必须完全相同(方法名和参数列表)
- 返回类型可以是父类方法返回类型的子类(协变返回类型,Java 5+)
- 访问修饰符不能比父类方法更严格:
父类public
→ 子类必须public
父类protected
→ 子类protected
或public
父类默认(包私有)→ 子类不能是private
- 不能抛出比父类方法更多的检查异常(可以抛出更少或子类异常)
- 不能重写
final
、static
或private
方法
2. 协变返回类型(Covariant Return Type)
Java 5 开始支持协变返回类型,允许重写方法返回父类方法返回类型的子类:
java
复制
class Fruit {
protected Number getWeight() {
return 100;
}
}
class Apple extends Fruit {
@Override
public Integer getWeight() { // Integer是Number的子类
return 150;
}
}
3. 异常处理规则
java
复制
class Parent {
protected void process() throws IOException {
// ...
}
}
class ValidChild extends Parent {
@Override
protected void process() throws FileNotFoundException { // FileNotFoundException是IOException的子类
// ...
}
}
class InvalidChild extends Parent {
@Override
protected void process() throws Exception { // 编译错误:Exception比IOException更宽
// ...
}
}
4. @Override 注解
虽然@Override
注解不是必须的,但依然强烈建议使用:
- 帮助编译器检查是否确实重写了父类方法
- 提高代码可读性
- 防止因拼写错误导致意外创建新方法
java
复制
class Bird {
public void fly() {
System.out.println("鸟儿飞翔");
}
}
class Penguin extends Bird {
@Override
public void fly() {
System.out.println("企鹅不会飞");
}
// 如果没有 @Override,下面的拼写错误不会被发现
// public void flay() { // 本意是重写fly,但拼写错误
// System.out.println("拼写错误的方法");
// }
}
评论区 0
发表评论
教程介绍
Java 通用高级编程语言,广泛应用在企业级应用开发、移动应用开发、大数据处理等领域。
34
章节
51
阅读
0
评论
反馈提交成功
感谢您的反馈,我们将尽快处理您的反馈