java方法的重载,重载可以返回值类型不同吗

是不是只要两个方法的返回值类型不同就不构成重载了?
如题
给定Java代码如下所示,在横线处新增下列()方法,是对cal方法的重载。
public class Test{
public void cal(int x, int y, int z) {}

}
A. public int cal(int x, int y, float z){ return 0; }
B. //public int cal(int x, int y, int z){ return 0; }
C. public void cal(int x, int z){ }
D. //public void cal(int z, int y, int x){ }
C我知道对的,就想知道,A为什么错了

6个回答

(1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。

重载Overloading是一个类中多态性的一种表现。

(2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。

调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。

(3) 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准
qq_34777982
筑梦之路 回复JK_point: 没问题,与返回值无关,这里参数个数一样,参数类型不同,就行了啊,不用管什么返回值
大约 3 年之前 回复
qq_37429370
JK_point 写了,编译没有问题,但是很多人都说是错的
大约 3 年之前 回复
qq_34777982
筑梦之路 回复JK_point: A是对的,不用管返回值和访问修饰,只要参数类型、参数个数不一样,就能构成重载,检验其实很简单,你自己写一个类,写一个重载测试下不就完了
大约 3 年之前 回复
qq_37429370
JK_point 老哥,你这些我知道的,但是A选项z传入的是float类型,这也没有构成重载吗
大约 3 年之前 回复

Java方法的重载是Java面向对象多态特性在同一个类中的表现,方法的重载与参数列表、参数个数有关,与访问修饰符、返回值没有关系!

qq_34777982
筑梦之路 回复JK_point: 所以就是重载啊,与返回值无关,就不用看返回值
大约 3 年之前 回复
qq_37429370
JK_point 回复筑梦之路: 所以会怎么样
大约 3 年之前 回复
qq_34777982
筑梦之路 回复JK_point: A项返回值是int,参数里面有float
大约 3 年之前 回复
qq_37429370
JK_point 回复筑梦之路: 那A选项的传入的参数类型也不同啊
大约 3 年之前 回复

返回值得类型不同不构成重载的,A中的参数中有float的,而返回值得类型的int型,应该是float型的吧,有个类型提升的吧

重载一个方法的原则是 至少 编译器要能分辨出你要调用哪个方法。

如果你参数不同,你传什么参数,编译器能找到对应的那个方法,那就没问题,可如果你参数都一样

试想,你怎么知道应该调哪个方法来执行这些入参呢?

方法重载:方法名相同;参数列表不同;与返回值无关。
此处z的类型是float,返回类型应该是float吧

方法重载:方法名相同;参数列表不同;与返回值无关。
此处z的类型是float,返回类型应该是float吧。。。。

qq_38542099
mingyu_star 回复JK_point: 你确定A错了吗?你这是从哪看的问题,我咋越看越觉着A对
大约 3 年之前 回复
qq_37429370
JK_point 如果返回值类型是float就对了吗?
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐