java 重写和重载的区别
时间: 2025-03-24 22:02:18 浏览: 43
### Java 中重写与重载的概念及区别
#### 方法重写的定义
方法重写是指在子类中重新定义父类中的某个方法的行为,前提是该方法的名称、参数列表以及返回值类型完全一致。这种机制允许子类提供特定于自身的实现方式[^3]。需要注意的是,重写的方法不能抛出新的强制性异常,也不能抛出比被重写方法更广泛的强制性异常[^4]。
#### 方法重载的定义
方法重载发生在同一个类内部,通过创建多个具有相同名称但参数列表不同的方法来实现。这些差异可能体现在参数的数量、类型或顺序上。方法重载并不关心返回值类型的改变,因为这不足以区分两个方法[^2]。
#### 主要区别
| **特性** | **方法重写 (Overriding)** | **方法重载 (Overloading)** |
|---------------------|-------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------|
| **发生位置** | 存在于父子类之间的继承关系中 | 发生在同一类的不同方法之间 |
| **方法签名要求** | 名称、参数列表和返回值类型必须完全匹配 | 只需保持方法名一致,而参数数量、类型或顺序可以不同 |
| **访问修饰符规则** | 子类方法的访问权限不能低于父类 | 不受此限制 |
| **异常处理** | 重写方法不能抛出新的强制性异常,也不得抛出比原方法范围更大的异常 | 对异常无特殊要求 |
以下是关于方法重写的一个简单示例:
```java
class Parent {
void display() {
System.out.println("Parent Method");
}
}
class Child extends Parent {
@Override
void display() { // 这里实现了方法重写
System.out.println("Child Method");
}
public static void main(String[] args) {
Parent obj = new Child();
obj.display(); // 输出 "Child Method"
}
}
```
对于方法重载的例子如下所示:
```java
public class Example {
int add(int a, int b) { // 定义第一个add方法
return a + b;
}
double add(double a, double b) { // 定义第二个add方法,参数类型不同
return a + b;
}
public static void main(String[] args) {
Example example = new Example();
System.out.println(example.add(5, 7)); // 调用int版本的add方法
System.out.println(example.add(5.0, 7.0)); // 调用double版本的add方法
}
}
```
以上代码展示了如何利用方法重载满足不同类型数据的操作需求。
### 总结
综上所述,方法重写主要涉及继承层次结构下的行为调整,强调一致性;而方法重载则是为了增强灵活性,在同一类内支持多种操作模式[^1]。
阅读全文
相关推荐
















