首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >消息传递与过程方法调用有何不同?无论如何,它正在调用另一段代码。那又怎么样?只是个恶作剧?

消息传递与过程方法调用有何不同?无论如何,它正在调用另一段代码。那又怎么样?只是个恶作剧?
EN

Stack Overflow用户
提问于 2022-10-22 10:00:47
回答 1查看 20关注 0票数 0

我似乎不完全理解消息传递(例如,在Java中,在任何OOP中)与从另一个库或模块调用方法(流程上类似于旧的纯C风格)是如何不同的。

在现代OOP中,我也(就像旧的过程C一样)通过另一个方法(或者方法链--如果我调用一个库方法,该方法从它的主体调用它所属的库中的其他助手方法)调用另一个代码块--那么,到底有什么区别呢?

我了解OOP,我已经用了很多年了。当然,代码组织、私有字段/方法(封装)和将字段与对象中的方法捆绑在一起非常方便--但这只是组织代码(一段代码调用另一段代码)的一种方式。

因此,对我来说,“发送信息”这个花哨的词听起来像是高估的炒作,实际上它只是一种更方便的组织代码的方式(OOP语言语法允许的),没有什么比这更具有革命性或意识形态上的不同了。

我是不是错过了一些重要的想法或概念?

维基百科写入 -消息传递是一种在计算机上调用行为(即运行程序)的技术。调用程序向进程(可能是参与者或对象)发送消息,并依赖于该流程及其支持基础结构,然后选择并运行一些适当的代码。消息传递与常规编程不同,在常规编程中,进程、子例程或函数由名称__直接调用。

调用程序发送消息,并依赖于对象来选择和执行适当的代码。 ..。调用其他对象上的服务,而不知道或不关心这些服务是如何实现的。

大概念的确切区别是什么?请用几句话指点它.当我试图探索各种概念时,周围有大量的水。

我不需要传递一些参数,因为我调用的对象已经包含必要的“参数”(state)作为其字段。好吧,我明白了。这与C-过程方法调用不太方便,也很不一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-22 10:40:41

过程和方法在概念上的区别是多态,它是用面向对象的语言通过方法的后期绑定来实现的。

当用过程语言调用过程时,在编译时知道过程调用将执行的代码块;也就是说,过程调用是静态定界。但是,当您用面向对象的语言调用方法时,您(通常)不知道调用的代码块将在编译时执行,因为它可以在子类中被重写;它甚至可以是在声明站点上没有实现的抽象方法。在程序范式中,没有宣布实施的“抽象程序”的想法是荒谬的。

这有时被称为“消息传递”,因为调用方只向对象“发送消息”,并且不一定知道将遵循什么过程来处理该消息。请注意,后期绑定也可以在非OO语言中实现,例如使用一级函数,因此当您调用回调函数时,您不一定知道该回调函数在编译时会做什么。但是回调函数的使用实际上并不是过程编程范式的一部分,尽管它们得到了一些过程语言的支持。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74162592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档