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: 没问题,与返回值无关,这里参数个数一样,参数类型不同,就行了啊,不用管什么返回值
2 年多之前 回复
qq_37429370
JK_point 写了,编译没有问题,但是很多人都说是错的
2 年多之前 回复
qq_34777982
筑梦之路 回复JK_point: A是对的,不用管返回值和访问修饰,只要参数类型、参数个数不一样,就能构成重载,检验其实很简单,你自己写一个类,写一个重载测试下不就完了
2 年多之前 回复
qq_37429370
JK_point 老哥,你这些我知道的,但是A选项z传入的是float类型,这也没有构成重载吗
2 年多之前 回复

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

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

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

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

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

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

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

qq_38542099
mingyu_star 回复JK_point: 你确定A错了吗?你这是从哪看的问题,我咋越看越觉着A对
2 年多之前 回复
qq_37429370
JK_point 如果返回值类型是float就对了吗?
2 年多之前 回复

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Java方法只有返回值类型不同算不算重载?
关于方法重载的介绍网上有很多,在此仅强调一点,只有返回值类型不同的方法不算重载,编译的时候直接报方法名重复错。
Java方法的重载
Java方法的重载
JAVA方法的重载
1.1    方法的重载我们假设要在程序中实现一个对数字求和的方法,由于参与求和数字的个数和类型都不确定,因此要针对不同的情况去设计不同的方法。接下来通过一个案例来实现对两个整数相加、对三个整数相加以及对两个小数相加的功能,具体实现如下所示。MethodDemo02.javapublic class MethodDemo02 {    public staticvoid main(String[]...
java方法的重载
java的重载,取决于同一个方法,不同的参数个数,类型.
Java方法&重载
详谈?略谈?Java方法 定义: Java方法是语句的集合,它们在一起执行一个功能。 1.方法是解决一类问题的步骤的有序组合 2.方法包含于类或对象中 3.方法在程序中被创建,在其他地方被引用 格式: [修饰符[权限修饰符] [静态修饰符]] 返回值类型 方法名 ([形参列表]){ 方法体....... } 修饰符: 修饰符分为多种修饰符 , 有...
关于虚函数重载返回值类型不同的问题
形如以下代码:rnclass Brnpublic:rn virtual B* clone(void)=0;rn;rnclass D1rnpublic:rn D()1:B()rn virtual D1* clone(void)rn return new D1;rn rn;rnclass D2rnpublic:rn D()2:B()rn virtual D2* clone(void)rn return new D2;rn rn;rnrnint main()rn B* d=new D2;rn d->clone();rn return 0;rnrnrn代码在Borland C++ 5.5和DevC++下能编译通过,但在VC6下编译通不过,错误信息大致如下:rnoverriding virtual function differs from "D1" only by return type or calling convention;rn请问为什么会报这样的错误,VC6的cl命令行编译器有什么编译开关避免这种报错吗?
java方法的重载练习
1.题目要求; 比较两个数据是否相等,参数类型分别为两个byte,short,int,long类型。 并在mian方法中进行调试。 public class MethosOverloadSame { public static void main(String[] args) { System.out.println(isSame((byte)10,(byte)20...
Java方法的重载(Reloading)
1.什么是方法的重载 如果两个方法重名,但是参数不同,那么就说一个方法是另一个方法的重载 2.具体说明 1.方法名相同 2.参数的类型不同,参数个数也不同 3.返回值类型不同 4.修饰符不同 5.Main方法也可被重载...
Java方法的重载和重写
重载   重载是指在同一个类中,存在方法名相同,参数列表不同的若干个方法。参数列表不同包括参数类型,参数个数和参数顺序;一定要注意方法的重载跟方法的返回值类型没有关系!!!   下面就各种情况举例说明: class MethodOverload{ /*方法1*/ int sum(int a, int b){ int result = a+b; return
java方法的重载与特殊情况
方法重载,通过方法的签名(方法名+参数列表)识别,特殊情况除外,特殊情况:(1.6以后编译不通过,应该是官方修复了,方法重载还是只能靠方法签名)public int test(List<Integer> list){ return 1; } public String test(List<String> list){ return ""; }【j
Java方法的重载(overload)
重载(Overload) 方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法,调用时,会根据不同的参数表选择对应的方法。 例子:   package com.ws.basic; public class MyClass { public void add(int x,int y){ System.out.println("The sum
java方法,重载,递归
java中方法是必不可少的,也是一定会使用到的;以下是方法具体的定义和使用: 方法: public static 返回值类型 方法名称 ( 参1,参2。。。){ 方法主体 程序语句; 【return 表达式】; } 如果使用void就表示没有返回值,此时不 能使用return返回内容; 方法命名:首字母小写,后面单词首字母 大写; public cl...
重载与返回值
重载的概念是: 方法名称相同,参数个数、次序、类型不同 因此重载对返回值没有要求,可以相同,也可以不同 但是如果参数的个数、类型、次序都相同,方法名也相同,仅返回值不同,则无法构成重载 如: public int A(int i); public double A(int i); 这2个方法不能构成重载,会有编译错误。 而: public in
Java方法的重载和类的继承
一、方法的重载 在Java中,通过定义不同的参数列表来实现方法的重载 public class Point { private int x,y; Point (int x){ this(x,x); } Point (int x,int y){ this.x = x; this.y = y; } public double distance(){//计算点到原点的
Java方法的创建和重载
Java方法的创建和重载 1.方法的定义 方法就是一段可重复调用的代码段 2.定义格式: 访问修饰符  返回值类型 方法名(){ 方法主体 } 方法的重载 方法名称相同,但是参数的类型和个数不同,通过传递参数的个数和类型不同来完成不同的功能。 public void tell(int i,String j){ } public
java方法创建和重载
方法的定义: 1、方法就是一段可重复调用的代码段 2、定义格式: 访问修饰符 返回值类型 方法名() { 方法主体. } 举例:有返回值,无返回值,添加参数 package ds; public class fa { public static void main(String[] args) { // TODO Auto-generated me...
“==”可以重载吗?
我想重载 == 操作符,请问这可以实现吗?rn哪位给我个代码?
宏可以重载吗?
例如:rn#define Key(X) Y(X)rn#define Key(X,X) Y(X,X)rn
析构函数可以重载吗
一个类中的析构函数可以和构造函数一样有多个吗?可以重载吗?如果可以重载又用什么方法去匹配重载的析构函数呢?C++中的标准库函数getche()什么功能呀?请各位大虾指教!谢谢!!!
析构函数可以重载吗??
!析构函授没有参数,怎么重载
ejbCreate可以重载吗?
ejbCreate可以重载吗?
方法的返回类型不同,算不算重载
搞混了,弄不清楚了
Java中覆盖和重载是什么?重载条件?返回值不同可以构成重载吗?
覆盖和重载很重要,并且比较容易混淆,所以面试中常见。 基础回答: 覆盖(Override),又叫重写,是指子类对父类方法的一种重写,方法名、参数列表必须相同,返回值小于父类,只能比父类抛出更少的异常,访问权限不能比父类的小。被覆盖的方法是private的话,就不是重写,而是定义的一个新方法; 重载(Overload)表示同一个类中可以有多个名称相同的方法,但这些方法的参数类型不同、个数不同、顺序不...
Java方法覆盖和重载(overload,extends)
[color=darkred][size=large]1.Java重载[/size][/color] [quote]在Java中,同一个类中的两个或者两个以上的方法可以有同一个名字,只要他们的参数声明不同即可,这种方法被称为重载(overload),方法重载是Java实现多态性的一种方式。[/quote] 1.普通方法重载 当一个重载方法被调用时,Java用参数类型或参数数量来表明实际调...
软件构造---Java方法的重载举例
Java中的方法可以重载,重载要求函数名相同,参数列表不同(类型或数量),返回值可以相同,也可以不同 举例如下: 1. 当pattern有float,double,int和Integer4中类型时,运行main函数,结果为 ccc bbbb 可见0是int型,0.0是double型 当注释掉pattern为int型的方法时,再次运行main函数,结果为 aaa bbbb 此时0被转换为float...
重写与重载的区别?重载的方法是否可以改变返回值的类型?
首先看一段程序: package testOverLoadandoverRide; public class A extends B{ //下面的是方法的覆盖(overRiding) public void riding(){ System.out.println(&quot;this is overRiding &quot;); } //下面两个函数是方法的重载(overLo...
Java方法创建和重载、递归调用
1 方法的定义1、方法就是一段可重复调用的代码段 2、定义格式访问修饰符 返回值类型 方法名(参数){ 方法主体 }方法的返回值类型中,void类型是不需要返回值的,其他的类型全部是需要有返回值的。2 方法的重载方法的重载:方法名称相同,但是参数的类型和个数不同,通过传递参数的个数和类型不同来完成不同的功能。public class MethodReload{ static voi
java方法的使用、方法重写和方法的重载
一、方法的定义 将一段逻辑提取出来,这种提取的形式就是方法,也称之为函数。为了实现某段代码的重复利用,将这段代码封装起来,这种封装的形式也是叫方法,也叫函数。 二、方法的格式 修饰符 返回值类型 方法名(参数列表){ 方法体 return 返回值 } 声明格式要注意的两点: 1.明确返回值的类型,方法执行完成以后,返回值数据类型是什么,方法的返回值类型就是对应的类型。 2...
为什么方法名、参数相同,返回值类型不同的方法不是重载
如题rn谢谢!
请问: += Operator 是否可以重载吗? 如果可以,如何重载?
rn如题rnrn
JAVA是否允许返回值类型不同的重载overload或覆盖override?
[size=medium]重载是一定不允许的。比如[/size] [code=&quot;java&quot;] class Super{ void f(){ } int f(){ return 1; } } [/code] [size=medium] 原因在与如果调用时int i = f();可以知道是调用Sub的f()。但是,往往用户不关心返回值。只是f()。这样就无法确...
关于重载的返回值问题
[code=c]rnclass Objectrnrnprivate:rn int value;rnpublic:rn Object(int i):value(i)rn rn rnrn const Object& operator=(const Object& obj)rn rn value = obj.value;rn return *this;rn rnrn const Object& operator=(const int i)rn rn value = i;rn return *this;rn rnrn int getValue(void) constrn rn return value;rn rnrn static void Test(void)rn rn Object a(1),b(2),c(3);rn Widget x(1), y(2), z(3);rnrn a = b = c = 4;rn //((a=b)=c)=4; // Error 2 error C2678: binary '=' :/rn no operator found which takes a left-hand operand of type 'const Object' /rn (or there is no acceptable conversion) rn rn rn rn[/code]rnrnrnrn[code=c]rnconst Object& operator=(const int i)rn rn value = i;rn return *this;rn rn[/code]rnrn[size=26px][color=#FF0000]返回值是是什么?rn是引用还是地址或者原对象?[/color][/size]
重载操作符返回值的问题
重载操作符有的返回值是类对象级别的,比如赋值操作符,有的返回的又是类成员级别的,比如下标操作符,到底该怎么确定函数的返回值呢!感觉不怎么好确定啊!有时候完全是乱的!!!
方法的返回值与重载
此阶段能掌握java基础语法,面向对象思想,抽象类,接口,异常,集合,IO流,文件处理,多线程,网络编程,eclipse的使用等java基础课程,给刚入门的小白提供直接跨入java领域的时空隧道。
为什么不能通过返回值重载
为什么只能通过范围和参数来重载,而不能通过返回值呢? 当编译器能从上下文中唯一的确定函数的意思时,如int x = f();这是没有问题的。然而,在C/C++中我们总是可以调用一个函数但忽略它的返回值,即调用了函数的副作用,在这种情况下,编译器不知道调用的哪个函数,而且读者也不知道调用的是哪个函数,所以c++禁止这种调用。...
二维数组的操作符[][]可以重载吗?
一维数组的操作符[]是可以重载的,但是二维数组的操作符[][]呢?rnrn我试了一下:rnrnC2DArray rn int *m_elem;rnpublic:rn int& operator [][](int i1, int i2);rn ...rn;rnrn编译是通不过的......
重载重载重载
重载重载重载重载重载重载重载重载重载重载重载重载重载重载重载重载重载重载
符号重载的返回值
Complex & operator += (const Complex & rhs)rn rn return Complex(this->English+=rhs.English,this->Chinese+=rhs.Chinese);rn rn其中的返回类型complex &和改为complex是否都未调用拷贝函数,为什么?rnComplex(this->English+=rhs.English,this->Chinese+=rhs.Chinese)不是局部对象吗,它属于什么类型?与局部对象有什么区别?
重载赋值运算符的返回值
最近看到C++的运算符重载,赋值运算符如=,+=,-=,.....,为什么operator=(),operator+=()...的返回值必须是对象的引用,书上说是保证这样的表达式赋值a=b=c,我把返回值改为按值返回,代码也能通过啊,到网上查了下,不过还是有点迷糊,大家给详细解释一下,有具体例子更好了,感谢。。。。。rnrn对了,还有个问题麻烦下大家,函数调用按值返回(对象)时是不是都要生成一临时对象,但有时候根本用不到返回值,C++这样做是不是仅仅为了保证一致性
相关热词 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法 c# gmail 发邮件 c# 多层文件