java重载 多态_重载是不是多态??

实际上,中文“重载”对应的英文有三个:override, overload 和 overwrite,后来渐渐把最后一个改译为“重写”或者“改写”。

override,是指对父类同签名的函数进行重新定义的一种做法,这种情况下,父类函数和子类函数都分别独立的个体。但在调用的时候,编译器(或解释器)能根据对象的实际类型来判断调用哪一个实现。

overload 是指对同一个函数名,不能签名的多种实现。这种情况下,往往可以使同一个函数名对不同类型的参数进行调用而产生不同的结果,典型的例子就是 max(int, int) 和 max(double, double) 等。

overwrite 通常是子类对父类同签名函数的改写,两个函数签名一样,但是毫无关系。这种情况下父类类型对子类对象的引用,调用方法是是调用的父类方法(注意与 override 的不同)

关于 overwrite 和 override 的不同,如下图

3f5eaf86bedc99404bca44083807c049.png

现在来说多态。我们先看看多态的定义:

多态指同一个实体同时具有多种形式。(必应网曲)

多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。(百度百科)

从定义来看,“重载”与多态无关,但是重载是多态的一种体现形式,其它的还包括接口、抽象、虚函数、模板、泛形…………,再从百度百科引用几句话:

简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。多态性在Object Pascal和C++中都是通过虚函数实现的。

多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。

C++中,实现多态有以下方法:虚函数,抽象类,覆盖,模板(重载和多态无关)。

多态就是允许方法重名 参数或返回值可以是父类型传入或返回。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值