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

bod*_*tva 6 ruby oop overloading multiple-inheritance

ruby是一种纯粹的面向对象编程语言,即使它不支持多重继承吗?如果是这样的话,请解释一下.

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

另外,我不确定纯OOP语言的所有先决条件.从这篇文章中,他们提到了

一个Ruby类只能有一个具有给定名称的方法(如果你定义一个具有相同名称的方法两次,则后一个方法定义占优势.

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

谢谢.

tad*_*man 11

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

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

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

由于鸭子打字,方法重载在Ruby中基本上无关紧要.在C++中,你可能有不同的处理方法string,intfloat类型,但是在Ruby中你有一个,叫to_f上无坚不摧的,并相应地操纵它.从这个意义上说,Ruby方法更像是C++模板.


saw*_*awa 5

首先,多重继承问题仅适用于面向对象的语言.询问Ruby本身的多重继承问题证明Ruby是一种面向对象的语言.


sk4*_*k4l 5

如果多重继承是OOP语言的唯一"症状",那么Java,C#,Python等等也不会是OOP语言.

首先使面向对象的语言成为自然对象.一切都是红宝石中的一个对象.整个语言建立在对象和数据的概念之上.不同的对象可以相互"通信",可以封装数据等.

看一下这个资源:ObjectOriented的定义.