`

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

阅读更多
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
Overload是重载的意思,Override是覆盖的意思,也就是重写。

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

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

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



override可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外,我们在继承中也可能会在子类覆盖父类中的方法。在覆盖要注意以下的几点:

1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;

2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;

3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;

4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。

overload对我们来说可能比较熟悉,可以翻译为重载,它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行。在使用重载要注意以下的几点:

1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int,float),但是不能为fun(int,int));

2、不能通过访问权限、返回类型、抛出的异常进行重载;

3、方法的异常类型和数目不会对重载造成影响;

4、对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。
分享到:
评论

相关推荐

    java面试题

    Overloaded的方法是否可以改变返回值的类型?  方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。...

    java 面试题(1)

    java 面试题(1)都是些基础的,1. 面向对象的特征有哪些方面2. Java中的异常处理机制的简单原理和应用3. String是最基本的数据类型吗?4. int 和 Integer 有什么区别5. ...Overloaded的方法是否可以改变返回值的类型?

    java面试题(葵花宝典)

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

    Java基础的笔试题

    Java基础的笔试题 String 和StringBuffer 的区别 运行时异常与一般异常有何异同? Collection 和 Collections 的区别 sleep() 和 wait() 有什么区别?...Overloaded 的方法是否可以改变返回值的类型?

    Java面试宝典

    一. Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出...Overloaded的方法是否可以改变返回值的类型? 14

    java面试宝典

    Overloaded的方法是否可以改变返回值的类型? 7 19、构造器Constructor是否可被override? 7 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以...

    java面试总结

    Overloaded的方法是否可以改变返回值的类型? 14 19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否...

    java面试题(面试 宝典)

    Overloaded的方法是否可以改变返回值的类型? 11 10. Final类有什么特点? 11 11. 继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 11 12. 内部类的实现方式? 12 13. 用JAVA实现一种排序,JAVA类实现...

    java面试过程当中遇到的一些题目

    Overloaded的方法是否可以改变返回值的类型? 11 10. Final类有什么特点? 11 11. 继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 11 12. 内部类的实现方式? 12 13. 用JAVA实现一种排序,JAVA类实现...

    Java面试宝典2011版

    Overloaded的方法是否可以改变返回值的类型? 14 19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否...

    Java面试宝典2017.zip

    Overloaded的方法是否可以改变返回值的类型? 14 19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否...

    变态级JAVA程序员面试32问

    Overloaded的方法是否可以改变返回值的类型?  第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?  第十七,给我一个你最常见到的runtime exception. ...

    Java问题宝典2012版

    Overloaded的方法是否可以改变返回值的类型? 15 19、构造器Constructor是否可被override? 16 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否...

    java 面试常问的问题 如何回答

    Overloaded的方法是否可以改变返回值的类型? 14 19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否...

    2013年最全的JAVA面试题集,内部资料,绝对能帮助到你,不要后悔哦。

    Overloaded的方法是否可以改变返回值的类型?(等级1级) 17.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concrete class)?(等级1级) 18.2.Anonymous Inner Class (匿名内部类)...

    java面试题集合

    作用域public,private,protected,以及不写时的区别 Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以...Overloaded的方法是否可以改变返回值的类型 String与StringBuffer的区别

    java面试经典(老师给的,我靠他过的)

    (1). 作用域public,private,protected,以及不写时的区别(有答案) (2). 面向对象的特征有哪些方面(有答案) (3)....什么是类?对象是靠什么进行交互的?...Overloaded的方法是否可以改变返回值的类型(有答案)

    千方百计笔试题大全

    Overloaded 的方法是否可以改变返回值的类型? 10 27、描述一下JVM 加载class 文件的原理机制? 10 28、char 型变量中能不能存贮一个中文汉字?为什么? 10 29、abstract class 和interface 有什么区别? 10 30、Static ...

Global site tag (gtag.js) - Google Analytics