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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 8161776 中级黑马   /  2012-5-19 16:44  /  2353 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨尧 于 2012-5-19 20:52 编辑

做完这个选择题,让我更加明白了 重载跟重写,

class Sup
{
        public float getNum()
        {
                return 3.0f;
        }
}

public class Test7 extends Sup
{
//此处添些代码        
}




下面的方法写在第6行位置上,哪个会引起编译错误?
A. public void getNum() { }
B. public void getNum(double d) { }
C. public float getNum() { return 4.0f; }
D. public double getNum(float d) { return 4.0d; }

A错了BD重载,C是重写



版主,我不要金钱,我要技术!!!钱乃身外之物,技术才是硬道理呀{:soso_e130:}求技术分

评分

参与人数 1黑马币 +10 收起 理由
贠(yun)靖 + 10

查看全部评分

8 个回复

倒序浏览
可能要说他们的根本去别是:重载时选择指定的构造器,有构造器定义不能使用空构造器。
                                       重写是覆盖父类的方法,使用自子重新定义的方法。
回复 使用道具 举报
本帖最后由 黄奕豪 于 2012-5-19 17:36 编辑

哥们,A确实错了,B和D还真不是重载,C还是重写,重载是什么?重载就是函数名相同,返回值类型相同,唯一的区别就是参数不一样,可以参数个数不一样,可以参数类型不一样,你再看看B和D的返回类型!!!这个真不是重载,B和D也是肯定会挂的,不信你编译一下!!!哥们,回头是岸啊!!!!

点评

修饰符 返回类型 是否一样 跟重载没有必然联系的亲  发表于 2012-5-19 20:53
呵呵,你错了,重载参数的个数 类型 顺序 3个一个不同是重载, 但是修饰符可以随意 只要方法名字一样就行了,重载不要求返回类型的  发表于 2012-5-19 20:52
回复 使用道具 举报
黄奕豪 发表于 2012-5-19 17:02
哥们,A确实错了,B和D还真不是重载,C还是重写,重载是什么?重载就是函数名相同,返回值类型不同,唯一的 ...

哈哈哈哈
回复 使用道具 举报
黄奕豪 发表于 2012-5-19 17:02
哥们,A确实错了,B和D还真不是重载,C还是重写,重载是什么?重载就是函数名相同,返回值类型相同,唯一的 ...

哥们,返回类型不能作为判断重载的依据,只要方法名字相同,参数不同(包括个数和类型)这就是重载,不管返回类型相同或者不同,而且这个B,D我刚又试了一下,的确没有挂的!!!。。。。。。。
回复 使用道具 举报
本帖最后由 杨尧 于 2012-5-19 18:08 编辑

事实证明,这个选择题的确是有用的,
方法调用的时候是无法指定返回类型的,所以返回类型不能作为判断重载的依据!!
希望能帮助更多的人理清思路,走出这个误区!!
加油~~~~~
回复 使用道具 举报
黄奕豪 发表于 2012-5-19 17:02
哥们,A确实错了,B和D还真不是重载,C还是重写,重载是什么?重载就是函数名相同,返回值类型相同,唯一的 ...

额~~~~~~~~~~~好吧!!我该看书了!~~~我错了!!我对不起国家,对不起人民~~~~~
回复 使用道具 举报
黄奕豪 发表于 2012-5-19 21:04
额~~~~~~~~~~~好吧!!我该看书了!~~~我错了!!我对不起国家,对不起人民~~~~~ ...

:L晕,没那么严重吧,每个人理解上可能都会有点小错误,你学到东西了,你应该高兴,好多人的错误自己还没有发现,那才对不起~~~~~~~~~~~
回复 使用道具 举报
重载必须是同一个类  方法名相同  参数类型 或者参数个数不同会构成重载   与返回值无关。  BD  不是重载  是普通的方法
另外 重载是同一个类多态的表现形式    重写是不同类多态的表现形式
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马