A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© IT人 中级黑马   /  2013-12-4 16:08  /  1408 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在子类覆盖父类的方法时,是不是参数的类型要保持和复制的一致??不是重写父类方法么??参数能变么??
为什么??

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

4 个回复

正序浏览
参数变了就是重载,你传啥参数就调用啥。
你要重写的不一样就改返回值吧,支持返回改变为原类型的子类
  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的子类型.

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 谢文斌 于 2013-12-4 22:06 编辑

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

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






评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
子类重写父类的方法时,参数的个数和类型一定要一致,这个是重写的规则,如果只是方法名相同,但是参数的类型和个数不同的话就是一个新的方法了,不要重写,叫重载  重写与重载的区别  方法的重载:是指在类中可以创建多个方法,它们有相同的名字,但具有不同的参数和不同的定义 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。 重写:父类与子类之间的多态性,对父类的函数进行重新定义,如果在子类中定义某方法与其父类有相同的名称和参数,我们就该方法被重写

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
你说的是重写与重载吧.重写父类方法类型要保持和覆盖的一致,从写父类方法这个不是方法重载,方法重载才是参数类型\参数列表不一样.方法重载与方法返回值无关

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马