黑马程序员技术交流社区

标题: Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? [打印本页]

作者: 范泰洋    时间: 2012-7-29 13:41
标题: Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
作者: 周世阳    时间: 2012-7-29 13:57
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,子类继承了父类的变量和方法,可以重写方法实现自己想要的方法,重载Overloading是一个类中多态性的一种表现,可以实现不同参数对象同名的不同方法。Overloaded的方法是可以改变返回值的类型。
作者: 陈汉维    时间: 2012-7-29 14:02
本帖最后由 陈汉维 于 2012-7-29 14:06 编辑

这这,有Overloaded这东西吗?- -!汗,我貌似没学过啊。
重载overload不能改变返回值的类型。
override叫重写,也叫覆盖。子类继承父类或类实现一个接口,把父类或接口中的方法给覆盖了。
覆盖注意事项:
1,子类方法覆盖父类方法时,子类权限必须要大于等于父类的权限。
2,静态只能覆盖静态,静态只能被静态覆盖。
例:
class Fu
{
         public void show()
{
         
}
}
class Zi extends Fu
{
         public void show()
{
         
}
}
overload叫重载,概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
重载的特点:与返回值的类型无关,只看参数列表。
例:
int add(int x, int y){return x + y};
int add(int x, int y, int z){return x + y + z};


作者: 尤洋    时间: 2012-7-29 19:04
重写Overriding,重载Overloading都体现了多态性。
两者定义不同,熟悉其特点就行了,没必要刻意去对比不同点
硬要比较的话:
override的 方法名、参数、返回值相同,而overload参数类型、个数、顺序至少有一个不相同。
override中子类方法不能缩小父类方法的访问权限。另外只有返回值不同的方法名不能重载。
Overloaded的方法是可以改变返回值的类型



作者: 朱烈葵    时间: 2012-7-29 20:10
原来是 重载和重写啊 呵呵  
作者: 吴立杰    时间: 2012-7-29 20:42
楼主记住了,教你一个快捷记忆的好口诀,重载是同名不同参(即函数名相同,参数列表不同),重写是子父类方法必须一模一样(权限子类大于父类)
作者: 吴立杰    时间: 2012-7-29 20:43
陈汉维 发表于 2012-7-29 14:02
这这,有Overloaded这东西吗?- -!汗,我貌似没学过啊。
重载overload不能改变返回值的类型。
override叫 ...

晕,你这里面前后矛盾啊
作者: 陈汉维    时间: 2012-7-29 20:44
吴立杰 发表于 2012-7-29 20:43
晕,你这里面前后矛盾啊

。。。哪里前后矛盾了。汗

作者: 陈汉维    时间: 2012-7-29 20:46
吴立杰 发表于 2012-7-29 20:43
晕,你这里面前后矛盾啊

Overloaded貌似没这个概念吧,只有Overload,还是楼主写错了?- -!
作者: 吴立杰    时间: 2012-7-29 21:14
陈汉维 发表于 2012-7-29 20:46
Overloaded貌似没这个概念吧,只有Overload,还是楼主写错了?- -!

重载overload不能改变返回值的类型。
后面你又说可以改变,哈哈 是不是写错了啊 兄弟
作者: 陈汉维    时间: 2012-7-29 21:32
吴立杰 发表于 2012-7-29 21:14
重载overload不能改变返回值的类型。
后面你又说可以改变,哈哈 是不是写错了啊 兄弟 ...

- -!重载确实不能改变返回值类型啊,我是回答楼主的问题啊,汗
overload叫重载,概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
重载的特点:与返回值的类型无关,只看参数列表。
- -!可是我这里没说可以改变返回值类型啊。例如
int add();和double add();这样是编译错误的啊
作者: 王志明    时间: 2012-7-29 22:32
Overload是重载,Override是覆盖,
重载可以只要参数列表不同就行,返回值和访问权限当然可以不一样,
覆盖的话参数列表要一样,访问权限要等于或大于被覆盖方法,返回类型和抛出的异常要和被覆盖方法相同或是其子类。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2