返回值不同算方法重载么?为什么?

简介: 本文解释了为什么返回值不同不算方法重载,强调了方法重载是基于方法名称和参数列表的,而返回值不是方法重载的考虑因素,因为返回值不影响JVM的方法签名,也不会造成编译时的歧义。

1、典型回答

返回值不同不算方法重载

方法重载(Overloading)是指在同一个类中定义了多个同名方法,但它们的参数列表不同,方法重载要求方法:

  1. 名称相同
  2. 参数类型、参数个数或参数顺序,至少有一个不同

方法重载的目的是提供更多的方法选择,方便程序员根据不同的参数类型或个数来调用合适的方法

所以,从上面方法重载的要求可以得出,返回值不同是不作为方法重载的依据的

2、全面剖析

为什么返回值不同不算方法重载的原因有两个:

  1. 从程序的执行层面来讲:返回值不同如果作为方法重载,那么会产生歧义
  2. 从 JVM 方法签名的角度来讲:返回值并不属于方法签名的一部分,因此无法定位到具体的调用方法

什么是方法签名?

方法签名(Method Signature)指的是方法的唯一标识,包括方法的名称、参数列表和参数的顺序。方法签名用于区分不同的方法,以便编译器和虚拟机能够正确地识别和调用特定的方法

2.1、程序执行层面

从程序的执行层面来讲,如果方法的返回值作为方法重载的依据的话,那么程序的执行就会产生歧义,例如以下代码:

此时,我们程序就不知道要去执行哪个方法了

2.2、JVM方法签名层面

方法签名由以下两部分组成:

  1. 方法名称:方法的名称用于标识该方法的功能和用途
  2. 参数列表:参数列表指定了方法接收的参数类型和参数顺序,每个参数都包括参数的类型和参数的名称。

JVM 是通过方法签名来定位到要调用的方法的,而在方法签名中并没有返回值,因此返回值并不能作为方法重载的依据

3、知识扩展

方法重载和方法重写有什么区别?

方法重载和方法重写有什么区别?

目录
相关文章
|
6月前
|
人工智能 自然语言处理 安全
“养龙虾玩Skill”指南!OpenClaw(Clawdbot)阿里云/本地部署+新手3种 Skill 挖掘AI工具核心价值
OpenClaw(昵称“龙虾”)的爆火,让“养龙虾玩Skill”成了2026年的新潮流——有人用它自动化处理工作,有人靠定制部署服务变现,甚至闲鱼上500元一次的上门部署生意都应运而生。但多数新手入手后,只停留在基础对话层面,殊不知OpenClaw的核心价值藏在Skill生态中——这些可执行的“能力单元”,就像一个个专属机器人,能将自然语言指令转化为实际操作,从文档处理到硬件控制,覆盖全场景需求。
3655 5
|
Java 网络架构 容器
面向整洁对象的分层架构COLA 4.0
COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“面向整洁对象的分层架构”。 目前COLA已经发展到COLA 4.0。 COLA分为两个部分,COLA架构和COLA组件。
面向整洁对象的分层架构COLA 4.0
|
7月前
|
人工智能 自然语言处理 搜索推荐
大模型微调应用:解锁垂直场景的无限可能
大语言模型微调,是让通用AI精准适配垂直场景的关键技术:低成本、高效率、保通用、可定制。本文详解其在智能客服、内容创作、专业问答、代码生成等领域的落地实践与核心要点,助力企业将AI转化为真实生产力。(239字)
|
9月前
|
SQL 关系型数据库 数据库
Postgresql入门之psql用法详解(二)- 元命令详解(\a-\dc)
psql元命令以反斜杠开头,由psql客户端直接解析执行,用于增强数据库管理与脚本操作。支持参数引用、变量插值、shell命令执行及SQL语句联动,涵盖连接控制、对象查看、数据导入导出等功能,是PostgreSQL交互操作的重要工具。
|
9月前
|
固态存储 虚拟化 iOS开发
VMware ESXi 8.0U3h macOS Unlocker & OEM BIOS 2.7 NVMe 驱动特殊定制版
VMware ESXi 8.0U3h macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
487 0
VMware ESXi 8.0U3h macOS Unlocker & OEM BIOS 2.7 NVMe 驱动特殊定制版
|
算法 搜索推荐 Java
【面试题精讲】Java Stream排序的实现方式
【面试题精讲】Java Stream排序的实现方式
|
Oracle Java 关系型数据库
Elastic Stack 兼容性之 ES 与 JDK:JDK版本兼容性及版本推荐
Elastic Stack 兼容性之 ES 与 JDK:JDK版本兼容性及版本推荐
|
Java Android开发
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
4107 1
|
Java 编译器 API
Java注解(Annotations)技术性文章
Java注解(Annotations)技术性文章
333 0
|
XML Android开发 数据格式
RecyclerView 、ScrollView滚动条长宽设置
RecyclerView 、ScrollView滚动条长宽设置
1646 0

热门文章

最新文章