重载 overload 和重写 overried 的区别

简介: 本内容介绍了面向对象编程中的“重载”与“重写”概念。重载指同一类中方法名相同但参数列表不同,由编译器在编译阶段根据参数选择方法;重写指父子类中方法名与参数列表均相同,由虚拟机在运行时根据对象实际类型确定调用哪个方法。内容还包含代码示例及重写的检查方式(如 @Override 注解),并强调了重写时访问修饰符、异常类型和返回值类型的规则。
  • 重载是对象的方法之间,它们方法名相同,但方法的参数列表不同
  • 重写是父子类(包括接口与实现类)中两个同名方法,它们方法名相同,且方法的参数列表相同
  • 重载在编译阶段,由编译器根据传递给方法的参数来区分方法
  • 而重写是在运行阶段,由虚拟机解释器去获取引用对象的实际类型,根据类型才能确定该调用哪个方法
  • 有没有发生重写,可以使用 @Override 来检查
// 重载
MyObject obj = ...
obj.test(123);   // 应该是调用 test(int x) 这个方法
obj.test("abc"); // 应该是调用 test(String x) 这个方法
// 重写
Super obj = ...
obj.test();     // 到底是调用父类,还是子类的 test 方法,必须检查引用对象的实际类型才能确定
  • 重载是编译时由编译器来区分方法,而重写是运行时由解释器来区分方法
  • 重写时,子类方法的访问修饰符要 >= 父类方法的访问修饰符
  • 重写时,子类方法抛出的检查异常类型要 <= 父类方法抛出的检查异常类型,或子类不抛异常
  • 重写时,父子类的方法的返回值类型要一样,或子类方法返回值是父类方法返回值的子类
相关文章
|
2月前
|
JavaScript 前端开发 Java
=和==和=== 和 equals 的区别
本内容介绍了编程中常见的运算符与方法区别,包括赋值运算符“=”,比较运算符“==”,以及JavaScript中用于全等比较的“===”。同时说明了在Java中“==”和equals方法的区别
274 5
|
2月前
|
缓存 Java
线程池的核心参数
线程池七大参数解析:核心线程数决定常驻线程,最大线程数控制并发上限,存活时间管理非核心线程生命周期,工作队列缓存待处理任务,线程工厂定制线程属性,拒绝策略应对任务过载,提升系统稳定性与资源利用率。
283 1
|
2月前
|
数据采集 人工智能 安全
MyEMS 开源能源管理系统:赋能双碳目标的能源数字化基础设施
MyEMS 是基于 Python 构建的开源能源管理系统,支持多场景能源数据采集、分析与可视化,集成设备管理、故障诊断与AI优化控制,助力碳达峰碳中和目标。系统符合国家“三级平台”架构,具备高扩展性与安全性,适用于工厂、数据中心等多种场景。
98 7
|
3月前
|
NoSQL Redis UED
redis数据迁移、数据导出和导入用什么工具
用户体验好的客户端,我建议使用yunedit-redis来做数据迁移,因为它支持图形化,还支持多种导出方式。 yunedit-redis它支持全库导出,也支持选择部分key导出,还支持用*号表达式导出。
|
2月前
|
缓存 安全 Java
String,StringBuilder 和 StringBuffer 的区别
本内容介绍了 Java 中 String、StringBuilder 和 StringBuffer 的区别与适用场景。
106 3
|
2月前
|
人工智能 缓存 JavaScript
Function AI 助力用户自主开发 MCP 服务,一键上云高效部署
在 AI 与云原生融合的趋势下,开发者面临模型协同与云端扩展的挑战。MCP(模型上下文协议)提供统一的交互规范,简化模型集成与服务开发。Function AI 支持 MCP 代码一键上云,提供绑定代码仓库、OSS 上传、本地交付物部署及镜像部署等多种构建方式,助力开发者高效部署智能服务,实现快速迭代与云端协同。
358 24
|
2月前
|
Java 索引
Java 中的异常
本文介绍了Java中异常的继承关系及分类,重点讲解了Throwable作为顶层父类,Error表示不可恢复错误,Exception表示可恢复异常,并区分了检查异常与非检查异常(RuntimeException)。
|
2月前
|
Java 索引
HashMap 原理(数据结构)
HashMap 在 JDK 1.8 后采用数组+链表+红黑树实现。通过 key 的 hashCode 计算索引,存取效率为 O(1)。发生冲突时,使用链表或红黑树(链表长度 ≥ 8 且容量 ≥ 64 时树化),提升性能。数组默认容量 16,负载因子 0.75,超过阈值则扩容,容量翻倍。新增元素时,判断是否更新、链表插入或树化,并检查是否需要扩容。
115 3
|
2月前
|
存储 消息中间件 数据库
如何开发人事及OA管理系统的其他SSC板块?(附架构图+流程图+代码参考)
本文介绍了人事及OA管理系统中“其他SSC板块”的开发与实现,涵盖公告发文、公司资质文件管理、名片印制申请、用印申请、开具证明申请等功能模块。内容包括各模块的功能需求、业务流程、开发技巧及代码参考,帮助企业提升行政管理效率,优化信息流通,增强信息安全。适合企业管理人员及系统开发人员阅读参考。
|
2月前
|
存储 分布式计算 Oracle
Java初级学习路线
本文为Java初学者提供了一条清晰、系统的学习路线,从环境搭建到实战练习,涵盖了Java基础语法、面向对象编程、常用API、异常处理及项目实践,助你从零开始掌握Java编程,打下坚实基础。