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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zy1349 中级黑马   /  2013-12-19 09:55  /  882 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zy1349 于 2013-12-19 10:13 编辑

在子类中定义一个与父类成员方法一致的方法,此时该方法的定义是覆盖还是重载了呢?  如果是重载,在什么情况下可以覆盖掉父类的方法呢?反之如何重载父类方法?

评分

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

查看全部评分

5 个回复

倒序浏览
覆盖是写的刚发与父类的方法完全一致,无论方法名还是参数的个数和参数的类型,而重载只是要求方法名一样,参数的个数和类型可以不一样,例如一个类中有多个构造函数,这多个构造函数就是重载
回复 使用道具 举报
  在子类中定义一个与父类一模一样的方法时,是覆盖
如果重载的话:举个例子父类方法void study(int a,double),
                                      子类方法void study(int a )
                                       子类方法double study(double)  
上面的两种都实现重载功能,在重载的时候返回值类型也可以不同,但是必须保证参数个数,或者参数类型不同。           

评分

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

查看全部评分

回复 使用道具 举报
       在子类中定义一个与父类成员方法一致的方法(修饰符,返回值类型,参数列表都要和父
类的成员方法一样),你这里所说的这种情况是覆盖,不是重载.下面我来跟你说说什么情况下
是覆盖和重载:
                     1 重载:重载最常见的是发生在同一个类中(典型的例子就是一个类中有
                                 多个构造函数),只要方法名相同,参数列表不同(可以是参数
                                  的类型不同,或者是参数的个数不同,或者是参数类型和参数个
                                    都不同这3种情况),这就是函数重载,函数重载与方法的返回
                                   值类型没有关系的,只跟参数列表有关。
                                 重载还可以发生在2个具有继承关系的类中(但是这种情况是很少见的)
                                  举个例子给你,比如父类中有一个public int get(int n){return n;}这个方法,
                                 子类中有一个public String get(String str) {return str;}这也是重载,是发生在
                                  2个类之间的重载
                           2 覆盖:覆盖是发生在具有继承关系的2个类之间的,覆盖要求成员方法的修饰符,
                                       返回值类型,参数列表都要一模一样。覆盖的本质其实就是把之前的那个
                                       方法的方法体改变了。覆盖完以后,当创建对象调用这个方法后是执行改
                                         变后的方法体了。希望对你有帮助(*^__^*)

评分

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

查看全部评分

回复 使用道具 举报
李红亮 发表于 2013-12-19 10:33
在子类中定义一个与父类成员方法一致的方法(修饰符,返回值类型,参数列表都要和父
类的成员方法一样) ...

谢谢 ~   回答的很细致 也让我明白了这两者之间的区别
回复 使用道具 举报
zy1349 发表于 2013-12-19 11:06
谢谢 ~   回答的很细致 也让我明白了这两者之间的区别

不客气,共同学习(*^__^*) ,加油.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马