正文

JAVA面试指南:overload和override的区别2014-03-24 11:09:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/javaxx/54411.html

分享到:

java软件工程师在应聘时面试官经常会问多个专业问题来考察你的java能力,其中override和overload的区别就是一个非常常见的面试问题,下面就来教教大家这两者到底有什么区别。 java软件工程师在应聘时面试官经常会问多个专业问题来考察你的java能力,其中override和overload的区别就是一个非常常见的面试问题,下面就来教教大家这两者到底有什么区别。


Overload是重载的意思,Override是覆盖的意思,也就是重写。我们说面向对象有四大特征:抽象,继承,封装,多态。其中多态这种特征的表现形式就包括方法的重写与重载。


重载Overload 表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。那么如果两个方法的参数列表完全一样,是否可以让它们的返回值不同来实现重载?结果是不行的。,我们可以用反证法来说明这个问题,因为我们有时候调用一个方法时也可以不定义返回结果变量,即不要关心其返回结果,例如,我们调用map.remove(key)方法时,虽然remove 方法有返回值,但是我们通常都不会定义接收返回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法,仅仅是返回类型不同,java 就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来判断。


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

阅读(731) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册