黑马程序员技术交流社区

标题: 哪位说说重载和覆盖的异同点??感觉这类知识容易混淆。 [打印本页]

作者: 大大的心    时间: 2014-12-2 20:13
标题: 哪位说说重载和覆盖的异同点??感觉这类知识容易混淆。
说说overload和override的异同吧。
作者: relice    时间: 2014-12-2 20:43
Overload重载,是一类中的多态性的表现,如果类中定义了多个同名的方法,其中参数列表的参数(个数或对应位置不同),就是重载
不允许参数完全相同,而只是返回值不同的情况,jvm会报错.
Override 主要用于父类和子类之间的方法重写,即指定方法可以在子类中重写,其参数列表要求相同。

作者: 龙骑将杨影枫    时间: 2014-12-2 20:46
Override更见于继承,比如继承抽象函数或者继承interface。必须override其所包含的方法,否则此函数无法编译。Override是 OOP中多态的体现,通过override可以将有共性的事物进行提炼。比如把大象关冰箱里和把长颈鹿关进冰箱里(分别关进两个不同的冰箱)时,完全可以new一个把动物关进冰箱里的类,然后实例化时,只要重写相应的方法而忽略整体的过程就可以完成了。  而重载更见于同一类下拥有同一命名的函数,比如2个数和3个数相加,函数名都可以写成是add。只不过一个是void add(int x,int y),void add(int x,int y,int z)。这样的好处是功能相同但是处理的参数不同函数不必多花脑细胞去想名字,让人一眼能够理解其的意思。而且部分重载是可以帮助程序员偷懒的,比如JOption的showmessage系列。可以偷懒只填需要弹出的提示框的内容,也可以通过各个参数定义一个完整的提示框。  简单的说ol是1个类的事,or是两个或者多个类 的事。不知道是否帮到你。
作者: 与梦逆风而行    时间: 2014-12-2 21:08
Overload:重载
|- 在一个类中定义的若干方法
|- 所有的方法名相同,但参数类型或个数不同
|- 只有参数有关,与返回类型无关
Override:覆写
|- 在继承的关系中
|- 子类定义了父类同名的方法,参数类型或个数最好完全一样。
|- 访问权限不能更严格
作者: 水竹    时间: 2014-12-2 21:31
你把其中一种弄清楚了自然就区分开了。
作者: 清诗纪事    时间: 2014-12-2 21:38
重载的函数名可以是相同的,主要是靠参数列表的不同来区分的
覆盖,是子类重写父类,参数列表要相同吧
作者: cbb    时间: 2014-12-3 01:19
话说 这个一点也不混淆的!重载是方法名相同,其他都不相同,覆盖是必须一模一样!
作者: caobin    时间: 2014-12-3 09:16
重载就是参数不一样的。覆盖就是参数一样的
作者: kenhe    时间: 2014-12-3 14:23
重载定义在同一个类中   覆盖定义在父子类关系中
作者: 大大的心    时间: 2014-12-3 16:02
挺好的。感谢楼上各位了。这里就不一一表谢啦啦
作者: 黑小强    时间: 2014-12-3 16:17
学习学习
作者: 李振乐    时间: 2014-12-3 16:28
重载之后两个功能都可以用,根据参数的不同进行选择,而覆盖存在于子父关系类中,子类方法覆盖父类,参数列表以及返回值类型都要求相同。
作者: 高昌德    时间: 2014-12-3 17:55
3楼正解,,,




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