黑马程序员技术交流社区

标题: 继承 [打印本页]

作者: 上官    时间: 2014-12-12 22:12
标题: 继承
子类继承父类   子类中为啥不能有和父类函数名字相同 但是返回值不同的函数
作者: 清浅。。    时间: 2014-12-12 22:20
参数列表不一样就可以写,例如重载,你说的是返回值烈性不同吧!!!
作者: zmhlnrs    时间: 2014-12-12 22:28
一个程序中不能有返回值不同的方法,如果要调用这个发放JVM不确定调用哪一个,所以会报错。
作者: zmhlnrs    时间: 2014-12-12 22:31
一个类中不能有同方法名字返回值类型不同的函数
但是可以有方法名和返回值都相同的但是数据类型不同的方法,这种叫重载
子父类中可以有方法名和返回值都相同数据烈性也相同的发放,这种叫重写
作者: I空空    时间: 2014-12-12 22:38
比如int show(),和String show (),而一般调用时都是对象.方法()如果方法名字相同,但是返回类型不一样,Java虚拟机就不知道调用哪个函数了,
作者: 史云龙    时间: 2014-12-12 22:40
这个是可以有的,叫做父子间的函数重载,必须满足重载的前提条件(方法名相同,参数属性(数两和类型)不同)。跟返回类型无关。
如果方法名相同,参数属性也相同,那么是不被允许的。因为在调用方法时,如果上述两个条件相同,虚拟机根本没法判断是在调用哪个。就会报错,所以就限制写这样的两个函数,直接在编译时报错,提醒程序员修改。

作者: Jennifer    时间: 2014-12-12 23:55
一个类中不能有同方法名字返回值类型不同的函数
重载是方法名跟类名相同,参数列表即参数个数,参数类型,参数顺序不同
作者: lishuliang28    时间: 2014-12-13 19:54
本帖最后由 lishuliang28 于 2014-12-13 19:55 编辑

要不完全相同,那是重写。   要不函数名不同,重新定义吧

作者: Gyx    时间: 2014-12-13 20:08
这个可以有,这种方法叫做子父函函数的重载,当子类出现和父类一模一样的函数(名字)时,  当子类对象调用该函数时,会运用子类函数的内容,  如同父类的函数被覆盖一样   这种情况是函数的另一特征:重写(覆盖),当子类继承父类,沿袭了父类的功能到子类中  但是子类 虽具备该功能,但是功能的内容和父类不一致  这是没有必要定义新功能,而是使用覆盖特殊,保留父类  的功能定义,并重写功能内容。
作者: AnElse    时间: 2014-12-13 21:04
可以的,相同的是重写,不同相当于子类重写定义了一个函数,那么在子类里有两个函数
作者: 上官    时间: 2014-12-14 18:13
Gyx 发表于 2014-12-13 20:08
这个可以有,这种方法叫做子父函函数的重载,当子类出现和父类一模一样的函数(名字)时,  当子类对象调用 ...

返回值 不相同啊   但是还是谢谢
作者: 上官    时间: 2014-12-14 18:14
Jennifer 发表于 2014-12-12 23:55
一个类中不能有同方法名字返回值类型不同的函数
重载是方法名跟类名相同,参数列表即参数个数,参数类型, ...

谢谢  今天又看看了视频 基本理解了
作者: 随风永夜    时间: 2014-12-14 18:52
函数名字相同  参数相同 基本就是一样的函数 那么调用的时候出现 2个返回类型   上帝都不知道要选那个了。
所以不可能返回类型不同  其他函数名和参数一样的函数出现
作者: 叫我王大锤    时间: 2014-12-14 19:32
3楼说的对
作者: Jennifer    时间: 2014-12-15 00:37
上官 发表于 2014-12-14 18:14
谢谢  今天又看看了视频 基本理解了

恩恩,理解了就ok了




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