加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby是一种纯粹的面向对象编程语言,即使它不支持多重继承吗?请

发布时间:2020-12-16 21:24:34 所属栏目:百科 来源:网络整理
导读:ruby是一种纯粹的面向对象编程语言,即使它不支持多重继承吗?如果是这样的话,请解释一下. 我知道,通过允许在一个类中包含多个模块,在某种程度上可以替代缺少多重继承. 另外,我不确定纯OOP语言的所有先决条件.从this article开始,他们就提到了 a Ruby class c
ruby是一种纯粹的面向对象编程语言,即使它不支持多重继承吗?如果是这样的话,请解释一下.

我知道,通过允许在一个类中包含多个模块,在某种程度上可以替代缺少多重继承.

另外,我不确定纯OOP语言的所有先决条件.从this article开始,他们就提到了

a Ruby class can have only one method with a given name (if you define
a method with the same name twice,the latter method definition
prevails..

那么这是否意味着Ruby不支持重载方法.如果是这样,它仍然可以作为纯OOP Lanaguage的资格?如果是这样,请及时解释其背后的原因.

谢谢.

解决方法

有几种不同的面向对象语言系列.如果您正在考虑多重继承和方法重载,那么您可能来自C语境,这些事情被视为理所当然.这些约定来自C语言受到严重影响的早期语言.

Ruby并不关心对象的类型,而是关注它们能够响应的方法.这被称为duck typing,它将像Ruby这样受Smalltalk启发的语言与更正式的受Simula或ALGOL影响的语言(如C)区分开来.

使用模块可以从各种来源“混合”方法并具有一种多重继承,但严格来说,一个类不可能有多个直接父类.在实践中,这通常不是什么大问题,因为继承不是添加方法的唯一方法.

由于鸭子打字,方法重载在Ruby中基本上无关紧要.在C中,你可能有各种方法来处理string,int或float类型,但是在Ruby中你有一个在任何进来时调用to_f并相应地操作它的方法.从这个意义上说,Ruby方法更像是C模板.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读