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模板.