即使 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 语言吗?如果是这样,请同时解释这背后的原因。
谢谢。
最佳答案
有几个不同的面向对象语言家族。如果您正在考虑多重继承和方法重载,您可能来自 C++ 思维模式,在这种思维模式中,这些事情是理所当然的。这些约定来自 C++ 深受其影响的早期语言。
Ruby 不关心对象的类型,而是对象能够响应的方法。这叫做 duck typing是什么分开Smalltalk受启发的语言,如来自更正式的 Ruby Simula或 ALGOL影响了 C++ 等语言。
使用模块可以“混合”来自不同来源的方法并具有一种多重继承,但严格来说,一个类不可能有多个直接父类。在实践中,这通常不是什么大问题,因为继承并不是添加方法的唯一方式。
由于鸭子类型,方法重载在很大程度上与 Ruby 无关。在 C++ 中,您可能有多种方法来处理 string
、int
或 float
类型,但在 Ruby 中,您会有一个调用 to_f
对传入的任何内容进行相应的操作。从这个意义上说,Ruby 方法更像是 C++ 模板。
关于ruby - ruby 是纯面向对象的编程语言吗,即使它不支持多重继承?请解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17680271/