Java 继承中父类方法的重写和重载162


在 Java 中,继承是一种重要的面向对象编程特性,它允许子类从其父类继承属性和方法。继承允许代码重用、减少冗余并促进代码的可维护性。本文将重点介绍 Java 中父类方法的重写和重载概念,并提供示例代码以说明这些概念。## 方法重写

方法重写 发生在子类中,其中子类提供对其父类中同名方法的不同实现。当子类希望以不同的方式实现父类方法时,就使用重写。重写的方法必须具有与父类方法相同的签名,包括方法名、参数列表和返回类型。子类方法可以返回与父类方法不同的类型,但它必须是父类方法返回类型的子类型。```java
class Parent {
public void message() {
("Parent Class Message");
}
}
class Child extends Parent {
@Override
public void message() {
("Child Class Message");
}
}
public class Main {
public static void main(String[] args) {
Parent p = new Parent();
(); // Output: Parent Class Message
Child c = new Child();
(); // Output: Child Class Message
}
}
```
在这个示例中,`Child` 类重写了 `Parent` 类的 `message()` 方法。当调用 `()` 时,执行 `Child` 类中重写的方法,而当调用 `()` 时,执行 `Parent` 类中的原始方法。
## 方法重载

方法重载 发生在同一类中,其中有多个同名方法,但具有不同的参数列表。与重写不同,重载方法的参数列表必须不同。重载方法可以具有不同的返回类型,也可以具有相同的返回类型。重载允许根据不同的输入参数提供相同方法的不同行为。```java
class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
public static void main(String[] args) {
Calculator calc = new Calculator();
((1, 2)); // Output: 3
((1.5, 2.5)); // Output: 4.0
}
}
```
在这个示例中,`Calculator` 类重载了 `add()` 方法,一个方法接受两个整数参数并返回一个整数,另一个方法接受两个双精度参数并返回一个双精度值。这允许根据要添加的数字类型使用相同的 `add()` 方法。


编译时多态性

方法重写和重载都支持编译时多态性。编译器在编译时确定调用哪个方法。在重写的情况下,编译器确定基于对象的实际类型调用哪个重写方法。在重载的情况下,编译器确定基于方法参数列表调用哪个重载方法。

注意要点
* 方法重写必须使用 `@Override` 注解,以确保子类方法实际上是重写父类方法。
* 重载方法不能使用 `@Override` 注解。
* 如果子类不重写父类方法,子类将继承父类方法的实现。
* 重载和重写方法可以拥有不同的访问权限修饰符。
* 重写方法不能抛出比父类方法更广泛的异常。
## 总结

理解 Java 中父类方法的重写和重载概念对于掌握面向对象编程非常重要。重写允许子类提供父类方法的不同实现,而重载允许在同一类中创建具有不同参数列表的同名方法。了解这些概念可帮助您编写高效、可维护的 Java 代码。

2024-10-31


上一篇:Java 字符型详解

下一篇:用 Java 掌握数据结构和算法:一份全面指南