【语言基础】参数多态、包含多态、过载多态和强制多态

一、前言

      多态在面向对象中起着非常重要的作用。多态性的官方介绍是作用于不同的对象的同一操作可以有不同的解释,从而产生了不同的结果。翻译过来就是:用同一个方法对不同的人操作有不一样的结果。

二、分类

      多态分为两种:通用的多态和特定的多态。两者的区别是前者对工作的类型不加限制,允许对不同类型的值执行相同的代码;后者只对有限数量的类型有效,而且对不同类型的值可能要执行不同的代码。

类型说明记忆方法
包含多态 一个继承了父类的一切属性的子类的对象同时属于父类2.子类型化 使用最多,子类型化
参数多态与类模板相关联,类模板所包含的操作涉及的类型必须用类型参数实例化
过载多态同一个算子(函数名等)在不同的上下文中可能有不同的操作意义上下文,重载
过载多态通过语义操作把一个变量的类型加以变换强制转换


      通用的多态又分为参数多态(parametric)和包含多态(inclusion);特定的多态分为过载多态(overloading)和强制多态(coercion)。

      强制多态:编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。程序设计语言中基本类型的大多数操作符,在发生不同类型的数据进行混合运算时,编译程序一般都会进行强制多态。程序员也可以显示地进行强制多态的操作(Casting)。举个例子,比如,int+double,编译系统一般会把int转换为double,然后执行double+double运算,这个int-》double的转换,就实现了强制多态,即可是隐式的,也可显式转换。

      过载(overloading)多态:同一个名(操作符﹑函数名)在不同的上下文中有不同的类型。程序设计语言中基本类型的大多数操作符都是过载多态的。通俗的讲法,就是c++中的函数重载。在此处中“overload”译为“过载”,其实就是所谓的“重载”,也许“overload”就应翻译为“过载,重载”吧,那“override”就只能是“覆盖”了。

      参数多态:采用参数化模板,通过给出不同的类型参数,使得一个结构有多种类型。个人感觉是“应该像C++中的模板类”吧,不知道对不对?

      包含多态:同样的操作可用于一个类型及其子类型。(注意是子类型,不是子类。)包含多态一般需要进行运行时的类型检查。—————–对于这个概念,我的理解是虚函数“virtual—override”机制。

三、总结

      节奏放慢,加油!!软考就过了,加油!!学会对比总结。成功就在前方。

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你个佬六

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值