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,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。
分享到:
相关推荐
Overloaded的方法是否可以改变返回值的类型? 7 19、构造器Constructor是否可被override? 7 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以...
一. Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出...Overloaded的方法是否可以改变返回值的类型? 14
Overloaded的方法是否可以改变返回值的类型? 14 19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否...
答:Overload 是方法重载,Override 是方法重写,Overloaded 的方法可以改变返回值的类型。 15. 写 clone()方法时,通常都有一行代码(不是必须有),是什么? 答:super.clone()。 16. 面向对象的特征有哪些方面...
Overloaded的方法是否可以改变返回值的类型? 14 19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否...
Overloaded 的方法是否可以改变返回值的类型? Overload是指多个同名方法,但是参数列表不同,Override是指子类中的方法覆盖父类中的方法。Overloaded 的方法可以改变返回值的类型。 19. 构造器 Constructor 是否...
Java 百题检测知识点总结 本资源摘要信息总结了 Java 百题检测的知识点,涵盖了 Java 基础知识、数据类型、运算符、控制结构、数组、...4. Overload 和 Override 的区别:Overloaded 的方法是否可以改变返回值的类型?
Overloaded 的方法是否可以改变返回值的类型?:Overload 是指同一个类中多个方法名称相同,但参数不同,而 Override 是指子类中重写父类的方法。Overloaded 的方法可以改变返回值的类型。 Java 抽象类和接口 10. ...
Overloaded的方法是否可以改变返回值的类型?方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在...
Overloaded的方法是否可以改变返回值的类型? 第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 第十七,给我一个你最常见到的runtime exception. ...
答案:Overload是同名不同参,Override是同名同参,Overloaded 方法可以改变返回值类型。 十九、构造器和接口 19. 构造器 Constructor 是 否 可 被 override? 答案:构造器不能被 override,因为它不是方法。 ...
Overloaded 的方法是否可以改变返回值的类型? Overload 是方法重载,即多个方法具有相同的名称,但参数列表不同;Override 是方法重写,即子类提供了一个与父类相同的方法签名。Overloaded 的方法可以改变返回值的...
Overloaded的方法是否可以改变返回值的类型? 15 19、构造器Constructor是否可被override? 16 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否...
Overloaded 的方法是否可以改变返回值的类型? Overload 表示方法重载,Override 表示方法重写。Overloaded 的方法可以改变返回值的类型。 19. 构造器 Constructor 是否可被 override? 构造器 Constructor 不能...
Overloaded 方法可以改变返回值的类型。子类可以重写父类的方法,重写的方法可以改变返回值的类型。 九、Set 集合 Set 集合中的元素不能重复,可以使用 iterator() 方法来区分重复与否。equals() 方法用来判断两个...
Overloaded 的方法是否可以改变返回值的类型?: Override 是指子类重写父类的方法,Overload 是指方法名相同但参数列表不同的方法。Overloaded 的方法可以改变返回值的类型。 10. Final 类有什么特点?: Final ...
Overloaded的方法是否可以改变返回值的类型? 14 19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否...
Overloaded的方法是否可以改变返回值的类型?(等级1级) 17.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concrete class)?(等级1级) 18.2.Anonymous Inner Class (匿名内部类)...
(1). 作用域public,private,protected,以及不写时的区别(有答案) (2). 面向对象的特征有哪些方面(有答案) (3)....什么是类?对象是靠什么进行交互的?...Overloaded的方法是否可以改变返回值的类型(有答案)