黑马程序员技术交流社区

标题: 发现一个特别好的选择题 [打印本页]

作者: 8161776    时间: 2012-5-19 16:44
标题: 发现一个特别好的选择题
本帖最后由 杨尧 于 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:}求技术分
作者: 李文富    时间: 2012-5-19 16:59
可能要说他们的根本去别是:重载时选择指定的构造器,有构造器定义不能使用空构造器。
                                       重写是覆盖父类的方法,使用自子重新定义的方法。
作者: 黄奕豪    时间: 2012-5-19 17:02
本帖最后由 黄奕豪 于 2012-5-19 17:36 编辑

哥们,A确实错了,B和D还真不是重载,C还是重写,重载是什么?重载就是函数名相同,返回值类型相同,唯一的区别就是参数不一样,可以参数个数不一样,可以参数类型不一样,你再看看B和D的返回类型!!!这个真不是重载,B和D也是肯定会挂的,不信你编译一下!!!哥们,回头是岸啊!!!!
作者: 袁錦泰    时间: 2012-5-19 17:31
黄奕豪 发表于 2012-5-19 17:02
哥们,A确实错了,B和D还真不是重载,C还是重写,重载是什么?重载就是函数名相同,返回值类型不同,唯一的 ...

哈哈哈哈
作者: 8161776    时间: 2012-5-19 17:59
黄奕豪 发表于 2012-5-19 17:02
哥们,A确实错了,B和D还真不是重载,C还是重写,重载是什么?重载就是函数名相同,返回值类型相同,唯一的 ...

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

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

额~~~~~~~~~~~好吧!!我该看书了!~~~我错了!!我对不起国家,对不起人民~~~~~
作者: 8161776    时间: 2012-5-20 10:00
黄奕豪 发表于 2012-5-19 21:04
额~~~~~~~~~~~好吧!!我该看书了!~~~我错了!!我对不起国家,对不起人民~~~~~ ...

:L晕,没那么严重吧,每个人理解上可能都会有点小错误,你学到东西了,你应该高兴,好多人的错误自己还没有发现,那才对不起~~~~~~~~~~~
作者: 黄克帅    时间: 2012-5-20 11:25
重载必须是同一个类  方法名相同  参数类型 或者参数个数不同会构成重载   与返回值无关。  BD  不是重载  是普通的方法
另外 重载是同一个类多态的表现形式    重写是不同类多态的表现形式




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