重载(Overload)和重写(Override)

Posted dm920

tags:

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

方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。

(1) 重载是一个类中定义了多个方法名相同,而他们的参数的数量不同数量相同而类型和次序不同,则称为方法的重载(Overloading)

(2) 重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样返回值也一样的方法,就称为重写(Overriding)

(3) 方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

● 区别:

方法的重载重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性

● 华为的面试题:为什么不能根据返回类型来区分重载?

因为调用时不能指定类型信息,编译器不知道你要调用哪个函数

float max(int a, int b);
int max(int a, int b);

当调用 max(1,2) 时无法确定调用的是哪个,单从这一点上来说,仅返回值类型不同的重载是不应该允许的。

从编译器的角度来看,它会将一个函数签名(包括它的函数名&参数列表)以前缀或后缀的方式组织成一个名称。

这里不包括它的返回值,所以从编译器的角度来来看,这两个函数是同一个,区分不开。

以上是关于重载(Overload)和重写(Override)的主要内容,如果未能解决你的问题,请参考以下文章

Java中重载(Overload)和重写(Override)的定义

重载(Overload)和重写(Override)

简述override和overload的区别

Java 重写(Override)与重载(Overload)

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

重载(overload)和重写(override)的区别Java面试题