码迷,mamicode.com
首页 > 其他好文 > 详细

重载(Overload)和重写(Override)

时间:2020-03-21 00:08:03      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:后缀   重写   不能   一个   line   确定调用   tle   int   amp   

方法的重写(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)

标签:后缀   重写   不能   一个   line   确定调用   tle   int   amp   

原文地址:https://www.cnblogs.com/Dm920/p/12507958.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!