Java中方法的重载和覆盖怎么区分?

如题所述

重载(overload):发生在一个类的内部,而且是针对方法而不是域而言。若方法的签名相同,但参数的个数或者参数的类型不同,则构成了重载。但返回类型不在考虑范围之内,也就是说,如果仅仅是返回类型不同,则构不成重载。 覆盖(override):发生在父类和子类之间,而且是针对实例方法(即非静态方法)而不是域而言。构成覆盖要满足以下条件:1、父类中的static方法不可以被覆盖;2、父类中的final方法不可以被覆盖;3、方法的签名、参数个数以及参数类型都要相同; 对于返回类型要说明两点: 1)如果返回类型是引用类型,则覆盖方法的返回类型可以声明为父类方法声明的返回类型的子类型; 2)如果返回类型是基本类型,则覆盖方法的返回类型必须和父类方法的返回类型相同;来源:( http://blog.sina.com.cn/s/blog_5c4532e50100bqbl.html) - Java中的重载、覆盖和隐藏_村长_新浪博客 对于方法参数的说明:不管父类方法中的参数是否是final的,子类都可以修改这个参数;4、子类方法的访问权限要大于等于父类的访问权限;5、子类方法可以改变某些方法修饰符,如:synchronized、native和strictfp。6、子类方法的throws子句可以和父类方法不同,它列出的每一个异常类型都应该和父类中的异常类型相同或者是父类异常类型的子类; 隐藏(hidden):发生在父类与子类之间,而且只是针对静态成员(静态方法和静态域)。说明:被声明为final的类方法不可以被隐藏。 实例方法被子类的方法覆盖时,实际被调用的方法是在执行时决定的。类方法被子类的方法隐藏时,实际被调用的方法是在编译时决定的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-27
覆盖:当你继承了某类的时候.在子类中若使用与父类同名的方法.父类中的该方法即被覆盖.重载:当你用类实现某接口后.若接口中存在抽象方法.必须在类中重写接口中的所有方法.因为.接口只用于规范化结构 这也是他存在的意义.
第2个回答  2013-10-27
说简单点:重载:就是方法名相同,其他的(返回类型,参数个数,参数类型)不完全相同覆盖:就是将该方法的方法体改写,方法名,返回类型,参数个数,参数类型都不变本回答被网友采纳
第3个回答  2013-10-27
重载:在一个类的内部,如果有一个方法名为test,你重新写一个方法,这个方法的名字也叫test,但是两个方法的参数不同.

也就是说,重载指的是在一个类的内部有两个或多个名字相同但参数不同的方法.

覆盖:如果一个父类有一个方法名为test,在他的子类里也写一个方法名字也是test,两个方法返回类型和参数都相同,但是方法体不同.

也就是说,覆盖指的是不同的类中(父类方法,子类覆盖)有两个或多个返回类型,方法名,参数都相同,但是方法体不同的方法
第4个回答  2013-10-27
重载就是在同一个类中有多个名称相同但参数和返回值不同的方法,例如int Add(int a, int b)double Add(double a, double b)在调用名称为Add的方法时会调用参数最匹配的方法。 覆盖就是子类继承了父类,并将父类中的一个方法重新实现,也就是说将父类的方法用新的代码重新写一遍,这样在调用这个方法的时候运行的就是子类新的代码,而不是父类原来的代码。 重载和覆盖的最主要区别就是:相互重载的各个方法的名称必须相同,参数必须不相同,返回值可以相同也可以不相同;覆盖必须发生在继承中,且方法名称、参数和返回值一定要相同。要注意的是重载也可以发生在继承中,也就是说子类的方法与父类的方法名称相同,但参数不同。

java中方法覆盖和方法重载的区别
1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行...

Java中方法的重载和覆盖怎么区分?
重载(overload):发生在一个类的内部,而且是针对方法而不是域而言。若方法的签名相同,但参数的个数或者参数的类型不同,则构成了重载。但返回类型不在考虑范围之内,也就是说,如果仅仅是返回类型不同,则构不成重载。 覆盖(override):发生在父类和子类之间,而且是针对实例方法(即非静态方法)...

java里的重写,重载,覆盖的区别?
重写即覆盖,重载与覆盖的区别是:1)方法覆盖要求参数签名必须一致,而方法重载要求参数签名必须不一致;2)方法覆盖要求返回类型必须一致,而方法重载对此不作要求 3)方法覆盖只能用于子类覆盖父类的方法,而方法重载用于同一个类中所有的方法(包括从父类中继承过来的方法)4)方法覆盖对方法的访问权限...

重载与覆盖有什么区别?
1、覆盖是子类和父类之间的关系,是垂直关系;2重载是同一个类中方法之间的累加,是水平关系。三、方法的数量不同 1、覆盖只能由一个方法,或只能由一对方法产生关系;2、重载是多个方法之间的关系。四、参数不同 1、覆盖要求参数列表相同。2、重载要求参数列表不同。

简述重载与覆盖的区别 java
重载是让同一方法名的方法可以处理和返回不同类型的数据 而覆盖是在子类中改写父类的方法

浅谈Overload和Override的区别
overload(重载,过载)1、参数类型、个数、顺序至少有一个不相同。2、不能重载只有返回值不同的方法名。3、存在于父类和子类、同类中。方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现。重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性...

java多态中的重载于覆盖有什么不同
比如父类是public,子类只能是public,但是如果父类是private,子类可以是private,protected,public,最后要注意的是父类(对于子类)可访问的东东等于是子类的(相当于同一个类中),如果在覆盖时,(子类父类中有同名方法)如果子类的同名方法的参数与父类不同,覆盖就变成重载了.....

java中,到底overwrite和override有什么区别?
Override,Overload,Overwrite的区别首先:Override是方法的覆盖 overload是方法的重载 Overwrite是方法的重写一,方法的覆盖(Override)是指子类重写从父类继承来的一个同名方法(参数、返回值也同),马克-to-win:此时子类将清除父类方法的影响,实现自身的行为。实在想用原来的,可以用super。二 ,顺便说...

java中方法的重载的什么意思,最好举个例子
重写就是覆盖父类的方法,和父类有相同返回类型,参数,甚至是抛出的异常,重写方法不能为private,运用中最典型的就是对接口方法的覆盖。方法的重写Overriding和重载Overloading是Java多态性的不同表现.重写Overriding是父类和子类之间多态性的一种表现;如果在子类中定义某方法和其父类有相同的名称和参数...

重载和覆写有什么区别?
其实很本质的区别就是看函数特征:覆写(Override)的两个函数的函数特征相同,重载(Overload)的两个函数的函数名虽然相同,但函数特征不同。函数特征包括函数名,参数的类型和个数。Override 是在继承的时候,如果你写的函数与要继承的函数函数特征相同,那么,加上这个关键字,在使用这个子类的这个函数...

相似回答