Java方法重载与覆盖详解:规则与实例
5星 · 超过95%的资源 需积分: 44 165 浏览量
更新于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 上传
2023-04-28 上传
2023-06-06 上传
2023-07-09 上传
2023-06-06 上传
2023-06-07 上传
2023-04-03 上传
2023-05-04 上传
software0008
- 粉丝: 0
- 资源: 1
最新资源
- 达梦数据库DM8手册大全:安装、管理与优化指南
- Python Matplotlib库文件发布:适用于macOS的最新版本
- QPixmap小demo教程:图片处理功能实现
- YOLOv8与深度学习在玉米叶病识别中的应用笔记
- 扫码购物商城小程序源码设计与应用
- 划词小窗搜索插件:个性化搜索引擎与快速启动
- C#语言结合OpenVINO实现YOLO模型部署及同步推理
- AutoTorch最新包文件下载指南
- 小程序源码‘有调’功能实现与设计课程作品解析
- Redis 7.2.3离线安装包快速指南
- AutoTorch-0.0.2b版本安装教程与文件概述
- 蚁群算法在MATLAB上的实现与应用
- Quicker Connector: 浏览器自动化插件升级指南
- 京东白条小程序源码解析与实践
- JAVA公交搜索系统:前端到后端的完整解决方案
- C语言实现50行代码爱心电子相册教程