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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蒋太原 中级黑马   /  2013-3-19 09:39  /  1567 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 真夏De樱花 于 2013-3-19 12:41 编辑

Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

点评

如果你的问题已经得到解决,请及时将主题改为[已解决],如果还有问题请继续追问,谢谢  发表于 2013-3-19 12:18

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

3 个回复

倒序浏览
重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。

重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是private类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法。

重载Overload 可以改变返回值类型,但是不能仅仅改变返回值类型,而实现方法的重载,因为我们调用方法 就是根据 方法名和参数列表,来判断所调用的方法,而不是返回值类型。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
一个是重载,一个是重写,用到的地方也是不一样的但都是对方法的操作
1,重载是类中的方法有时候需要重新定义,但是方法名相同,这个就是重载,顾名思义就是函数名相同参数列表不同,比如 void shou(){},void shou(int a){}这个就是方法的重载,简单的来说就是方法名相同就行了,你原方法有返回值,重载的方法也可以没有返回值,这个没有关系只要函数名相同就可以
2,重写,简单来说重写只是出现在继承中,父类有一个方法 void shou(){System.out.println("123")}子类中也需要这个方法,但是方法体需要不一样,那么 void shou(){},重写中就是方法名和参数列表必须一样,重写的只是里面的方法体
3,重载当然可以改变返回值类型了,因为重载只是需要方法名相同就可以了

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
方法重载:Java允许同一个类中定义多个同名的方法,如果同一个类中包含两个或两个以上方法的方法名相同,但形参列表不同。

重载的要求:同一类中方法名相同,参数列表不同。方法的返回值,修饰等等与方法重载没有关系。

方法重写:子类包含父类同名方法的现象叫方法的重写,

重写的要求:子类重写父类的方法时,必须和父类方法具有相同的名字,参数列表和返回值类型,子类重写父类的方法时,访问权限必须高于或等于父类的访问权限(方法访问修饰符)。

注意:如果被重载的方法中包含了长度可变的形参。比如同一类中包含test(int a)和test(int...nums),当执行对象.test(2)方法时,将会执行test(int a)方法。

希望对你有所帮助!

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