深入 -- 为什么不能根据返回类型来区分重载?

21天教你学会PCIe专栏(21)--总结和展望 回顾整个课程的主要内容和知识点总结PCIe技术的发展历程和现状展望PCIe技术的未来发展趋势和应用方向分享学习心得和实践经验1.1 课程回顾基础知识:了解了PCIe的基本概念、发展历程、标准和规范。分层结构:学习了PCIe的物理层、数据链路层和事务层的结构和功能。功能和特性:掌握了PCIe的热插拔、电源管理、多功能设备等高级功能。高速接口技术:学习了PCIe 4.0、5.0和未来趋势。实际案例分析:分析了GPU加速器和存储设备的PCIe设计和优化。常见问题和解决方案。 阅读详情

this blog not in maintenance, updates

this is my latest blog address:https://simba-cheng.cn/

昨天上网乱翻,看到一个问题,挺有意思的。

重载(方法名相同、参数列表不同)这个概念,相信大家都知道了,很多面试都会问到。

但为什么不能根据返回类型来区分重载?

首先重载是Java多态的一种体现,它实现的是编译时的多态。

举个例子:

float max(int a, int b);
int max(int a, int b);

上面两个方法,别人调用的时候,不要返回值,直接就是:max(...),你能区分出它想调用哪个函数吗?

当调用max(1, 2);时无法确定调用的是哪个,单从这一点上来说,仅返回值类型不同的重载是不应该允许的。

另外,在Java虚拟机中也有提到重载的问题:

在《深入理解Java虚拟机》中,6.3.6章节有这样一段:

    在Java语言中,要重载一个方法,除了要与原方法具有相同的简单名称之外,还要求必须拥有一个与原方法不同的特征签名;

    特征签名就是一个方法中各个参数在常量池中的字段符号引用的集合,也就是因为返回值不会包含在特征签名之中,因此Java语言里面是无法仅仅依靠返回值的不同来对一个已有方法进行重载。

    但在Class文件格式之中,特征签名的范围更大一些,只要描述符不是完全一致的两个方法也可以共存。

    也就是说,如果两个方法有相同的名称和特征签名,但返回值不同,那么也是可以合法存于同一个Class文件中的。

Class文件中同方法名、同参数、不同返回值可以,那为什么Java文件中不行呢?

因为Java语言规范的规定,所以编译时会出现错误。

那为什么Class文件可以呢?因为Java虚拟机规范和Java语言规范不同,两者是分开的...

如有更多兴趣,可以看看这篇文章

Java语言层面和JVM层面方法特征签名的区别 及 实例分析

奈何水平有限,再挖就挖不动了.....

C# MES通信从入门到精通(10)——C#使用HTTP的Post和Get方法和Mes系统通信 本文详细介绍了如何利用C#完成与HTTP协议的MES系统进行通信,通过POST和GET方法实现与MES系统的交互,由高级工程师的实战经验总结,实属C#与MES通信领域的葵花宝典! 阅读详情

相关推荐

从分立到集成:深入解析Buck电路的核心模块与设计权衡

本文深入解析Buck电路的核心模块与设计权衡,从分立到集成方案的优缺点对比。详细探讨Buck电路的高效能量转换、小型化设计及灵活电压调节能力,并结合实际案例分享分立方案中的PWM生成、反馈环路设计及保护电路优化经验,为工程师提供实用设计参考。

weixin_29306317的博客 223

C++报错:无法重载仅按返回类型区分的函数

原因:我的这个CW_sdk_clientDemo类头文件里没有,找不到定义。貌似还有一些案例是其他的原因,我这个只是冰山一角,记录一下,仅供参考。

Dontla的博客 7288

termux 安装 rockylinux

往找最新的文件目录,选择ARM版本的image。或者直接查看目录或者国内阿里云镜像,按照cpu架构(安卓9手机一般是aarch64arm最新架构),获取镜像地址,以及checksum里的SHA256信息更新到以下rocky9.sh脚本,如果不需要直接使用即可。

欢迎来到别往的博客 983

C++无法重载仅按返回值类型区分的函数

根本原因:编译过后的符号表中函数信息仅包括函数名和参数列表信息,所以参数类型不同可以重载,而无法重载仅按返回值类型区分的函数。 解析:为了使得不同编译单元的相同变量之间建立联系,系统通过将变量和函数的名字放在目标代码的符号表来完成,符号表中,函数并不依靠它在源程序中耳朵名字来命名,仅包括函数名和参数列表信息,所以参数类型不同可以重载,而无法重载仅按返回值类型区分的函数。 ———————————————————————————————————————————— 源文件编译过程 源文件——编译——>目标文

qq_43350746的博客 4万+

用python提取PDF中各类文本内容的方法

用python提取PDF中各类文本内容的方法

安静的软件工程师 6086

别再让CPU干GPU的活了:CST Studio Suite GPU加速深度调优指南(从驱动版本到任务管理器监控)

本文深入探讨了CST Studio Suite的GPU加速深度调优方法,从NVIDIA驱动版本选择到系统级资源管理,再到实时监控与瓶颈诊断技术。通过科学的驱动优化、GPU资源管理策略和高级调优技巧,显著提升仿真效率,特别适合电磁仿真工程师和硬件加速需求的专业用户。

weixin_28740299的博客 164

为什么函数不能根据返回类型来区分重载?

不能,因为调用时不能确定函数返回的类型信息,编译器不知道你要调用哪个函数。 例如:如下代码 package Test; /** * 方法的重载代码 * * 下面以count方法演示代码的重载 * * @author 宁小菜 * */ public class test { public int count(int a,int b) { return a+b; } public int count(double a,int b) { ...

JAVArumendaorutu的博客 2241

亚马逊跨境电商选品数据分析:Python爬虫实战指南

本文将带领大家构建一套完整的亚马逊选品数据采集与分析系统,使用最新的Python技术栈,从零开始爬取亚马逊商品数据,并进行深度分析。

2201_76125261的博客 299

为什么函数不能根据返回类型不同来重载?

华为的面试题中曾经问过这样一个问题 – “为什么不能根据返回类型来区分重载”。 因为调用时不能指定类型信息,编译器不知道你要调用哪个函数。 例如下面两个函数: float max(int a, int b); int max(int a, int b); 当调用max(1, 2);时,无法确定调用的是哪个,单从这一点上来说,仅返回值类型不同的重载是不应该允许的。而且代码写成这样,编译也会给你报错。 再比如对下面这两个方法来说,虽然它们有同样的名字和自变量,但其实是很容易区分的: void f() {}

weixin_42887343的博客 3172

uniapp - 微信小程序接入官方人脸识别认证详细流程及示例源码,Uniapp微信小程序项目集成官方提供的人脸识别身份验证插件接口(多种示例:人脸核验、身份证件与人脸是否匹配、是否活体、实名认证等)

uni-app微信小程序人脸识别认证,使用uniapp开发微信小程序的人脸采集功能/人脸识别功能,uniapp vue3微信小程序活体人脸识别,Uni-app微信小程序实名认证,uniApp微信小程序人脸认证,UniApp的微信小程序实名认证与人脸识别系统开发,人脸核身微信小程序uni-app接入流程,wx.startFacialRecognitionVerify,uniapp开发微信小程序-人脸采集功能、微信人脸识别实名认证集成指南,识别失败,人脸识别接口怎么调用,前后端完整示例代码demo,人脸检测功能

🏆 前端领域优质创作者 3280

Labview项目01:标准可配置序列测试框架

摘要:本文介绍了一个基于LabVIEW2020开发的通用测试框架系统。该系统采用模块化设计,包含主界面、调试界面、设置界面和登录界面。主功能包括:1)可配置测试序列,支持延时、预定值输出、随机值输出等操作;2)单步测试功能自主添加;3)界面支持测试序列编辑和权限管理。系统采用队列机制处理事件和测试流程,通过CSV文件存储测试序列,支持参数化配置。用户可自定义测试VI(A_.vi和N_.vi格式),并通过调试界面验证测试序列。最终测试结果在主界面显示,提供整体判断功能。该系统既可作为学习参考,也可用于实际测试

weixin_38637405的博客 1552

《c语音》IntelliSense 无法重载仅按返回类型区分的函数

函数重载:仅根据函数返回值类型不能实现重载 函数的两个要素:参数与返回值。 如果同名函数的参数不同(包括类型、顺序不同),那么容易区别出它们是不同的函数。 如果同名函数仅仅是返回值类型不同,有时可以区分,有时却不能。例如: void Function(void); int Function (void); 上述两个函数,第一个没有返回值,第二个的返回值是int 类型。如果这样调用函数: in...

BelleDiao的博客 1万+

【数据湖仓】:Iceberg、Hudi 和 Paimon 对比

适用于需要多计算引擎支持和复杂查询的离线批处理场景。其中立性和灵活性使其成为构建新型数据平台的理想选择。:在需要高频数据更新和高效小文件管理的场景中表现出色,适合实时数据处理和增量数据更新的业务需求。:专为实时流式数据处理设计,适用于对数据实时性要求高的业务场景,如实时数据分析和实时指标监控。通过以上分析,可以看出 Apache Iceberg、Apache Hudi 和 Apache Paimon 各有其独特的优势和适用场景。企业应根据自身业务需求和技术栈选择合适的数据湖仓方案,以充分发挥其价值。

欢迎来到我的博客,一起探索代码里的世界! 1609

为什么不能根据返回类型区分重载?

重载(过载)和重写(覆盖)的区别重载的方法能否根据返回类型进行区分。?答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同,参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类...

sinat_32176267的博客 4万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

为什么不能根据返回类型来区分重载

在Java等编程语言中,不能仅根据方法的返回类型来区分重载方法,因为方法签名由方法名和参数列表组成,返回类型不属于签名的一部分。编译器在调用方法时无法通过参数确定目标方法,导致编译错误。若需要实现类似功能,可通过修改参数列表、使用不同方法名或泛型编程等合法方式解决。这一规则确保了编程语言的逻辑清晰和代码可维护性,并与其他主流语言(如C++、C#)的设计保持一致。

季鸢的博客 497

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

为什么不能根据返回类型来区分重载?

但为什么不能根据返回类型来区分重载?首先重载是Java多态的一种体现,它实现的是编译时的多态。举个例子: float max(int a, int b); int max(int a, int b);上面两个方法,别人调用的时候,不要返回值,直接就是:max(...),你能区分出它想调用哪个函数吗?当调用max(1, 2);时无法确定调用的是哪个,单从这一点上来说,仅返回值类...

diaowan0312的博客 299

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

为什么不能根据返回类型来区分重载?

今天刷题的时候看到一个问题,觉得挺有意思的,上来先百度了一下大家的回答。 这个老哥是我觉得回答的最清晰的。文末附上链接 为什么不能根据返回类型来区分重载? 首先重载是Java多态的一种体现,它实现的是编译时的多态。 举个例子: float max(int a, int b); int max(int a, int b); 上面两个方法,别人调用的时候,不要返回值,直接就是 max(1,3);,你能区分出它想调用哪个函数吗? 当调用 max(1, 3);时无法确定调用的是哪个,单从这一点上来说,仅返回值类型

Elizabeth 526

Java - 为什么不能根据返回类型来区分重载?

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 因为调用时不能指定返回类型信息,编译器不知道你要调用哪个函数。 ...

了解➔熟悉➔掌握➔精通 3万+

java 返回类型区分重载_方法重载,为什么不能根据返回类型来区分?

详见:四一、方法重载简述任何程序设计语言都具备一项重要特性就是对名字的运用。当创建一个对象时,也就给此对象分配到的存储空间取一个名字。所谓方法,则是给某个动作取的名字。通过这个名字,你可以引用所有的对象和方法。名字起的好可以使系统更易于理解和修改。在日常生活中,相同的词可以表达多种不同的含义——它们被“重载”了。特别是含义之间的差别很小时,这种方式十分有用。比起“以洗衬衫的方式洗衬衫”、“以洗狗的...

weixin_36479862的博客 571

为什么不能根据返回类型来区分重载_java中方法的重载

我们都知道java中会出现方法的重载,那什么是重载,它有什么作用呢?让我们来了解了解。java首先我们要来了解什么是方法的重载:在一个类里面,往往会创建很多种方法,同时某些方法都拥有同一个方法名,但它们拥有不同的参数个数,或者不同的参数类型。在调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。同时,在重载的时候,方法名是相同的,但是它们的参数类型和个数不一样,...

weixin_39770165的博客 288

为什么不能根据返回类型来区分重载_Java重载和重写的区别

前言有时候我真的分不清方法重载和方法重写,总数把这两个混淆特此记录下此片文章,方便以后自己查询时不用再去Baidu、Google、Bing了Java 重载与重写是什么?有什么区别?重载(Overload)是让类以统一的方式处理不同类型数据的一种手段,实质表现就是多个具有不同的参数个数或者类型的同名函数(返回值类型可随意,不能以返回类型作为重载函数的区分标准)同时存在于同一个类中,是一个...

weixin_39778400的博客 173
上一篇: 深入 -- 代理模式与动态代理
下一篇: SpringBoot - 01 - 第一个Demo
Simba_cheng
博客等级 码龄11年 250粉丝 203原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值