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

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

要回答这个问题,首先要了解一点前置内容,方法签名。 方法签名是由:方法名称 + 参数类型 + 参数个数组成的一个唯一值,这个唯一值就是方法签名,而 JVM(Java 虚拟机)就是通过这个方法签名来决定调用哪个方法的。 从方法签名的组成规则我们可以看出,方法的返回类型不是方法签名的组成部分,所以当同一个类中出现了多个方法名和参数相同,但返回值类型不同的方法时,JVM 就没办法通过方法签名来判断到底要调用哪个方法了,如下图所示:

那为什么返回类型不能做为方法签名的一部分呢? 原因其实很简单,试想一下,如果方法的返回类型也作为方法签名的一部分,那么当程序员写了一个代码去调用“重载”的方法时,JVM 就不能分辨要调用哪个方法了,如下代码所示:

像以上情况,JVM 就推断不出来要调用哪个方法了,所以方法的返回类型不能作为方法签名的一部分。

  面试官:为什么不同返回类型不算方法重载? - 知乎

    C++函数重载(名字相同,参数类型、个数、顺序不一样)_c++函数重载可以用函数的不同参数数量实现吗_别忘了坚持的博客-CSDN博客

总结:
-函数重载是C++对C的一个重要升级
-函数重载需要在同一个作用域中
-函数重载通过函数参数列表区分不同的同名函数
-extern关键字能够实现C和C++的相互调用
-编译方式决定符号表中的函数名的最终目标名

同名不同命之函数的重载

  https://blog.csdn.net/m0_46376834/article/details/117121553

函数名重载:

函数名相同,
但是, 函数的参数(形参)绝不相同:
1)参数个数不同
2)或参数个数相同, 但是参数的类型不同

只有返回类型不同,不能构成函数重载
只有形参变量名不同, 不能构成函数重载.

注意: C语言不支持函数重载

c++同名函数----重载、隐藏、覆盖

  https://blog.csdn.net/weixin_41537785/article/details/81904896

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值