Java方法重载与覆盖详解:规则与实例
5星 · 超过95%的资源 需积分: 44 94 浏览量
更新于2024-09-25
收藏 3KB TXT 举报
Java 中的方法重载(Overloading)是指在同一类中,可以有多个同名的方法,但它们的参数列表必须不同,包括参数类型、数量或顺序。这允许开发者根据传入的不同参数执行不同的操作,提高代码的灵活性。重载方法的规则如下:
1. **参数差异**:方法重载依赖于参数的不同,包括参数类型、个数和顺序。例如,`fun(int, float)` 和 `fun(String, int)` 是重载的,但 `fun(int, int)` 不算,因为参数类型相同。
2. **访问权限无关**:重载不考虑方法的访问修饰符(如 public、protected、private),只看参数。访问权限的改变不影响方法的重载。
3. **异常处理不影响**:方法重载不考虑抛出异常的类型和数量,异常处理部分不会作为区分重载的依据。
4. **继承中的限制**:如果父类的某个方法是私有(private),子类不能直接覆盖它,除非通过 protected 或者没有访问修饰符的方法实现间接调用。
重写(Override)则是指在子类中提供一个与父类中同名、同参数列表的方法,以实现父类方法的功能。重写要求:
- 子类方法必须具有与父类相同的访问修饰符(如果不是 final 的)。
- 方法名、参数列表完全匹配。
- 返回类型可以不同,但通常保持一致以实现功能替代。
- 子类方法的抛出异常不能多于或更少于父类方法,且异常类型必须是父类方法抛出异常的子类。
- 如果父类方法是 final,则子类不能覆盖它,因为 final 方法不能被重写。
下面给出的代码示例展示了这些概念的应用:
```java
// 父类 aa
public class aa {
public float getNum() { return 3.0f; } // 原始方法
// 这里是非重载的错误示例,因为参数类型相同
// public float getNum(int i) { return 4.0f; }
// 重写示例,子类 TestFile 需要覆盖父类的 getNum 方法
public class TestFile extends aa {
public void getNum(int i) { return; } // 不是重载,无返回值,用于演示覆盖
public float getNum() { return 4.0f; } // 正确的重写,参数列表与父类一致
// 试图重写静态方法,这是不允许的
// public static float getNum() throws MyException { ... }
}
}
```
总结来说,Java 中的方法重载和重写是面向对象编程中两个重要的概念,它们在类的设计中起到了灵活扩展和子类行为定制的作用,但需遵循特定的规则以确保程序的正确性。
2011-11-17 上传
2013-01-16 上传
2020-09-02 上传
2020-12-22 上传
2021-11-04 上传
2020-09-03 上传
2020-09-03 上传
2021-09-30 上传
2022-06-10 上传
software0008
- 粉丝: 0
- 资源: 1
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查