【问题标题】:Is it Possible to achieve Multiple Inheritence in ruby?是否可以在 ruby​​ 中实现多重继承?
【发布时间】:2026-01-19 10:25:01
【问题描述】:

我怀疑我们是否可以使用“模块”概念来实现多重继承,或者是否有其他关键字或概念可以在 ruby​​ 中实现多重继承?

【问题讨论】:

    标签: ruby multiple-inheritance


    【解决方案1】:

    Ruby 支持 mixin 组合。一个类只能继承一个超类,但它可以混入许多个模块。

    严格来说,这不是多重继承,但它至少提供了跨不同类的行为共享。

    【讨论】:

    • 而且在我看来它比多重继承要好得多。
    • 但是,从某种意义上说,MI 更强大。当然,不是在可计算性理论图灵机的意义上,而是与表达性有关:您可以使用 MI 轻松实现 mixins(事实上,mixins 在 Eiffel、Python 和 C++ 中是一个非常常见的习惯用法),但您无法实现MI 使用 mixins。 OTOH,很容易把 MI 搞得一团糟。 cough C++ cough 但是,正如 Eiffel 清楚地表明的那样,做正确并非不可能。请记住:如果您只知道 C++,那么判断 MI 就像判断所有美国人一样,而您只知道 Glenn Beck 或用 Pinto 判断所有汽车。
    • 我不应该提出我不太熟悉的话题,很棒的评论。 :)