简述override和overload的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简述override和overload的区别相关的知识,希望对你有一定的参考价值。

overload(通常被翻译为过载或重载) 一般语境里overload是对method(方法)而言的,可以指一个类中多个名字相同而参数类型列表不相同的方法,这个名字代表的方法就是被overload了的。编译器会根据参数类型列表的不同来决定调用叫这个名字的很多方法中具体的哪一个。 >>override(通常被翻译为覆盖) 一般语境里,如果说这个method(方法)是被override来的,就是说在定义这个方法的类的父类中有一个与这个方法同名且参数类型列表相同的方法,在子类中,这个方法被override了。在对这个子类的实例调用该方法时,编译器确切的知道调用的是这个子类的方法。
你可以百度一下的 刚好我也记不清了 就替你百度了
参考技术A

override(重写,覆盖) 
(1)方法名、参数、返回值相同。 
(2)子类方法不能缩小父类方法的访问权限。 
(3)子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。 
(4)存在于父类和子类之间。 
(5)方法被定义为final不能被重写。 
(6)被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。

overload(重载,过载) 
(1)参数类型、个数、顺序至少有一个不相同。 
(2)不能重载只有返回值不同的方法名。 
(3)针对于一个类而言。 
(4)不能通过访问权限、返回类型、抛出的异常进行重载; 
(5)方法的异常类型和数目不会对重载造成影响;

override应用中,最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法。 除了这个典型的用法以外,我们在继承中也可能会在子类覆盖父类中的方法。

override是在不同类之间的行为,overload是在同一个类中的行为。

参考技术B 您好,提问者:
还是以代码的例子看一下区别吧。
1.重载的概念:
----->在同一个类中,允许存在同名函数,但它们的参数个数或者参数类型不同即可。
public static void main(String[] args)
System.out.println(add(1,2));
System.out.println(add(1.11,2.22));

//返回一个int类型相加的和
public static int add(int a, int b)
return a + b;

//返回一个double类型想加的和
public static double add(double a, double b)
return a + b;


重载,在一个类定义中,可以编写几个同名的方法,但是只要它们的签名参数列表不同,Java就会将它们看做唯一的方法。简单的说,一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。

重写就是子类重写了父类的方法。
比如:
class Fu
int num = 3;

class Zi extends Fu
int num = 5;

这时候Zi类继承了Fu类,也拥有了num,这时候输出num,JVM(虚拟机)会先去Fu类中查找,输出Fu类中的num,但是Zi类有num,所有在运行Zi类的时候重写了num的值,输出5本回答被提问者和网友采纳
参考技术C 方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型 参考技术D overrider是重写,overloaded是重载.
重写只有在某个类继承(实现)某个类(接口)时才会有,这个时候,你可以将父类的方法重新修改.
重载是在一个类中有很多方法名称相同但是参数个数或者参数类型不同的函数.

以上是关于简述override和overload的区别的主要内容,如果未能解决你的问题,请参考以下文章

C#简述override和overload的区别

覆写(Override)和重载(Overload)的比较

java语言中,overload(重载)和override(覆盖)有何区别?

请问重载overload,覆盖override,重写overwrite,这三者之间有啥区别呢?

c++重载(overload)和重写(override)的区别和虚函数

方法重载和重写的区别