什么是方法重载?可以定义两个同名但参数类型不同的方法吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是方法重载?可以定义两个同名但参数类型不同的方法吗?相关的知识,希望对你有一定的参考价值。
可以在一个类中定义两个名称和参数列表相同但返回值不同的方法吗?
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。
以java为例,我们编写一个方法重载的例子。
参数列表的不同体现在以下两点:
1、参数的类型不同
2、参数的个数不同
具体例子如下:
在java中完成方法重载需要的具体规范如下:
1、方法名一定要相同。
2、方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。
如果参数个数不同,就不管它的参数类型了;如果参数个数相同,那么参数的类型必须不同。
3、方法的返回类型、修饰符可以相同,也可不同。
参考技术A 我前几天回答过类似的问题,把答案稍微改一下给你。原帖http://zhidao.baidu.com/question/284142407.html;所谓重载就是同一个类中存在俩或多个方法重名。可不可以重载是有限制的。
参数不同算重载,仅返回值不同不行,其实这不仅仅是语法要求,而是有现实原因的。
你可以想象,假设别人调用 add方法,调用形式是这样的:
……
add(3,0.5);
现在有两个方法:double add(int a, double b); double add(int a, int b);
假如你是编译器,你知道具体调用的是哪个方法么?显然很容易知道
而对于上述调用,假设有两个参数相同返回值不同的 add方法,即:
double add(int a, double b); int add(int a, double b);
你知道应该选哪一个么? 反正我确定不了,编译器也确定不了!确定不了就没法编译、连接!
因此,之所以返回值不同不能作为重载条件,根源在于调方法是可以不用返回值的,就像上面那样。
即:两种形式是否算重载的根本原因在于,这两种形式可不可能在某些调用场景下引起混淆!!
这就是所谓“规定”的缘由。
你要想真正的理解重载甚至精通Java,就不能仅仅记语法规则,而应该深入的想想,为什么会有这样的规则。Java是一个很优美的语言,很多规则都是有原因的。 参考技术B 方法重载 就是同名方法 方法名相同,参数类型、参数个数不同,就是方法重载,和方法的返回类型无关, 当你调用重载方法时,程序会根据你给的参数自动去匹配相应的方法本回答被提问者采纳 参考技术C 这种技术叫方法重载
方法重载概念:
方法重载是让类以统一的方式处理不同类型数据的一种手段。
Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法, 这就是多态性。下面是一个方法重载的例子:
class MethodOverloading
viod receive(int i)
System.out.println("Received one int data");
System.out.println("i="+i);
viod receive(float f)
System.out.println("Received one float data");
System.out.println("f="+f);
viod receive(String s)
System.out.println("Received a String");
System.out.println("s="+s);
注意,Java的方法重载要求同名的方法必须有不同的参数表,仅有返回类型不同是不足以区分两个重载的方法。
参考技术D 可以在一个类中定义两个名称和参数列表相同但返回值不同的方法吗?
不行
可以定义名称一样,但是参数类型不同的方法。
可以定义两个同名但参数类型不同的方法
可以 你说的就是重载
编写同名方法
- 实例说明
对于C语言来说,是不能 定义同名方法的。
本实例将演示重载在Java中的应用。
- 关键技术
在Java中,可以通过重载(overloading)来减少方法名称的个数。当对象调用方法时,可以根据方法参数的不同来确定执行哪个方法。方法的参数不同包括参数类型不同、参数个数的不同和参数顺序的不同。需要注意的是不能通过方法的返回值来区分方法,即不能有两个方法签名相同而返回值不同的方法。
说明:要完整的描述一个方法,需要说明方法名称和方法参数,他们统称为方法签名。
- 方法重载的应用
除了可以对普通方法使用重载外,还可以对构造方法使用重载。
此外,重载不仅可以发生在一个类中,也可以发生在继承关系的多个类中,及子类可以重载超类定义的方法。Java中还支持对方法进行重写(overriding),它可以为同一个方法提供不同的实现。
以上是关于什么是方法重载?可以定义两个同名但参数类型不同的方法吗?的主要内容,如果未能解决你的问题,请参考以下文章