对消息、消息传递和多态的理解

本文探讨了C++中的消息传递概念,详细解释了多态的不同形式,包括参数多态、包含多态、重载多态和强制多态。此外,还介绍了通过类型转换构造函数和类型转换运算符在C++中实现的强制多态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        以前学习面向对象的时候,对这消息的概念一直很不解,对多态也是一知半解。最近在看书的过程中,逐渐明白了这两个概念。现将对两者的理解整理如下:

  • 消息和消息传递 
         对象之间进行通信的一种构造叫做消息。当一个消息发送给某个对象时,包含要求接收对象去执行某些活动的信息,接受到信息的对象经过解释,然后予以响应。这种通信机制叫做消息传递。发送消息的对象不需要知道接收消息的对象如何对请求予以响应。
        OOP使得对象具有交互能力的主要模型就是消息传递模型。对象被看成用传递消息的方式互相联系的通信实体,它们既可以接受、也可以拒绝外界发来的消息。一般情况下,对消接收它能够识别的消息,拒绝它不能识别的消息。对于一个对象而言,任何外部代码都不能以任何不可预知或事先不运行的方式与这个对象进行交互。
        发送一条消息至少应给出一个接收 对象的名字和要发给这个对象的那条 消息的名字。通常,消息的名字就是这个对象中外界可知的某个方法的名字。在消息中,经常还有 一组参数(也就是那个方法所要求的参数),将外界的信息传给这个对象。
       对于一个类来说,它关于方法界面的定义规定了实例的消息传递协议。
       通俗地说,消息就是类中声明为public的方法(接口)。而消息传递就是在一个对象的某个方法中调用另一个对象中的某个方法。

  • 多态
                在程序设计领域,一个广泛认可的定义是“一种将不同的特殊行为和单个泛化记号相关联的能力”。
                Cardelli and Wegner把多态从语言设计的角度分为通用多态( universal )和特定多态( ad-hoc)。
        通用多态又分为参数( Parametric )多态和包含( Inclusion)多态;特定多态包含重载(overloading )
        多态和强制(coercion )多态。       
                具体分类如下图所示:
                                                                             |-- parametric
                                                    |-- universal --|
                                                    |                        |-- inclusion
                      polymorphism --|
                                                    |                        |-- overloading
                                                    |-- ad hoc     --|
                                                   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值