黑马程序员技术交流社区

标题: 关于子类覆盖父类方法的疑问???? [打印本页]

作者: IT人    时间: 2013-12-4 16:08
标题: 关于子类覆盖父类方法的疑问????
在子类覆盖父类的方法时,是不是参数的类型要保持和复制的一致??不是重写父类方法么??参数能变么??
为什么??
作者: 心的方向    时间: 2013-12-4 16:29
你说的是重写与重载吧.重写父类方法类型要保持和覆盖的一致,从写父类方法这个不是方法重载,方法重载才是参数类型\参数列表不一样.方法重载与方法返回值无关
作者: 末末    时间: 2013-12-4 17:22
子类重写父类的方法时,参数的个数和类型一定要一致,这个是重写的规则,如果只是方法名相同,但是参数的类型和个数不同的话就是一个新的方法了,不要重写,叫重载  重写与重载的区别  方法的重载:是指在类中可以创建多个方法,它们有相同的名字,但具有不同的参数和不同的定义 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。 重写:父类与子类之间的多态性,对父类的函数进行重新定义,如果在子类中定义某方法与其父类有相同的名称和参数,我们就该方法被重写
作者: 谢文斌    时间: 2013-12-4 21:53
本帖最后由 谢文斌 于 2013-12-4 22:06 编辑

overload(重载):
1,在同一个类;
2,必须同名;
3,参数个数或参数类型不同、顺序不同;
4,函数重载和返回值类型无关。
5,java是严谨性语言,如果函数出现的调用的不确定性,会编译失败。
==========傲娇的分割线===========

override(复写,覆盖,重写):
子类中。当子类方法覆盖父类方法时,子类权限必须要大于等于父类的权限,静态只能覆盖静态,或被静态覆盖。







作者: sd110572    时间: 2013-12-5 12:15
参数变了就是重载,你传啥参数就调用啥。
你要重写的不一样就改返回值吧,支持返回改变为原类型的子类
  1. class Test1 {
  2. public Object workO() {
  3.   return new Object();
  4. }
  5. }

  6. class Test2 extends Test1 {
  7. public String workO() {
  8.   return new String();
  9. }
  10. }
复制代码

其中String是Object的子类型.




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