黑马程序员技术交流社区
标题:
重载问题
[打印本页]
作者:
Spring up
时间:
2012-12-20 16:02
标题:
重载问题
void show(int a,char b,double c){}
double show(int x,char y,double z){}
上面这两个函数为什么没有重载?
作者:
蔡汉康
时间:
2012-12-20 16:04
一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。
因为你的返回值类型不同所以不是重载
作者:
netboy032
时间:
2012-12-20 16:10
方法名相同,参数列表不同——重载。你这个是方法名相同,参数列表也相同,怎么重载?
作者:
高境
时间:
2012-12-20 16:14
上面回答的是错误的,这两个函数参数列表是一样的。函数重载和返回值无关。
可以想像如果根据不同的返回值来判断不同的重载也许可行,但是如果调用方法不是为了获得其返回值,而是为了得到其“副作用”,那么根据返回值类型来判断重载就会遇到麻烦。
即如果你这样定义一个重载:
void f() {}
int f() {}
在关心返回值的情况下,使用int x = f()可以正确调用下面那个方法,但是如果不关心返回值,直接使用 f() 的话编译器就无法正确判断你究竟想调用哪个方法。
作者:
蔡汉康
时间:
2012-12-20 16:37
学习了!{:soso_e200:}
作者:
王进亮
时间:
2012-12-20 17:01
override(重写)
1、方法名、参数、返回值相同。
2、子类方法不能缩小父类方法的访问权限。
3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
4、存在于父类和子类之间。
5、方法被定义为final不能被重写。
overload(重载)
1、参数类型、个数、顺序至少有一个不相同。
2、不能重载只有返回值不同的方法名。
3、存在于父类和子类、同类中。
作者:
杨志
时间:
2012-12-20 21:54
看来你要打好基础啊!这个真的是很基础的!不能光去为了技术分啊!
作者:
罗海清
时间:
2012-12-20 23:17
1、方法重载,只与函数的参数有关,包括参数的个数,参数的类型,参数的顺序,与其他东西无关,例如返回类型。
2、当然,函数名要完全相同
3、需要注意的问题继续看别人的回答
作者:
张会文
时间:
2013-1-2 17:43
重载函数的条件是方法名相同,参数类型不同,包括参数的类型、数量、顺序,而与返回值类型无关,很明显,这两个方法名相同,但是参数是不符合要求的
作者:
何伟
时间:
2013-1-2 17:48
重载是指同一个类中两个方法,方法名相同参数列表不同,不用看返回值类型,你这个参数列表都一样了,
作者:
张会文
时间:
2013-1-2 17:58
给你个重载小例子研究,涉及到重载和多态。
package com.itheima;
/**
* 9、 编程实现:猫和狗都会叫,但猫是喵喵的叫,狗是汪汪的叫?
* 定义一个动物类,在动物类(animal)中有一个叫的抽象方法。
* 写两个子类,一个猫一个狗,继承自动物类,并实现相应的抽象方法。
* @author Sun
*
*/
//定义一个动物类
abstract class Animal {
//动物类中叫的抽象方法
abstract void cry();
}
//动物类子类狗
class Dogs extends Animal{
//重载父类方法
public void cry(){
System.out.println("小狗,汪汪!");
}
}
//动物类子类猫
class Cats extends Animal{
//重载父类方法
public void cry(){
System.out.println("小猫,喵喵!");
}
}
public class Test9{
//多态实现动物叫
public static void main (String[]args){
Animal dog=new Dogs();
Animal cat=new Cats();
dog.cry();
cat.cry();
}
}
复制代码
作者:
偏執旳、靑春
时间:
2013-1-3 19:31
重载记住与返回值类型无关,你前面的int,double代表的是返回值类型。这两个不能同时存在的。
作者:
李云飞
时间:
2013-1-3 22:24
重载函数是不用看返回类型 看的的函数名以及函数的参数类型与参数的个数
int func();
int func(char a);
int func(int a);
int func(long a);
int func(double a);
int func (int a,int b);
int func(int a, double b);
int func(int a,charb):
这些函数均可以构成重载
作者:
詹卓锋
时间:
2013-1-3 22:43
方法的重载
class Add
{
public int Sum(int para1, int para2)
{
return para1 + para2;
}
public int Sum(int para1,int para2,int para3) //相加3个整型
{
return para1 + para2 + para3;
}
public double Sum(double para1,double para2) //相加两个double型
{
return para1 + para2;
}
public string Sum(string para1,string para2) //相加两个string型
{
return para1 + para2;
}
}
类中两个以上的方法,取的名字相同,只要使用的参数类型:public double Sum(double para1,double para2)或者参数个数不同:public int Sum(int para1,int para2,int para3),这就叫做方法的重载。
在方法的重载中,不允许仅仅返回值类型不同的方法的重载。例如:public int Sum(int para1,int para2){} public void Sum(int para1,int para2){}
作者:
詹卓锋
时间:
2013-1-3 22:46
void类型不能出现在方法的重载中,
作者:
詹卓锋
时间:
2013-1-3 22:46
在方法的重载中,不允许仅仅返回值类型不同的方法的重载。例如:public int Sum(int para1,int para2){} public void Sum(int para1,int para2){}
作者:
何竹冬
时间:
2013-1-3 23:15
标题:
中
你好
重载是同一个类的方法名相同参数列表不同,包括参数类型,参数顺序,参数个数不同。
void show(int a,char b,double c){}
double show(int x,char y,double z){}
你这两个函数函数名相同第一个条件满足
参数列表也相同第二个条件不满足。
所以不能重载。
作者:
刘圣繁
时间:
2013-1-4 15:36
这个问题很简单 不用回答那么复杂吧
函数调用 一般是 对象.函数名 对象引用.函数名 类名.函数名 总是都是用的函数名 假如你定义了这两个函数 那人家调用函数名show() jvm该怎么判断你到底调用的那个函数啊?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2