2013-01-11 35 views
0

我是Ruby新手,正在阅读this post,它将mixin与C#接口进行比较。我不清楚的是,mixin中的方法是否可以在实现它的类中进行重新定义。您是否可以在实现它的类中重新定义mixin的方法

例如,如果我把include myMixin - 其中有一个方法toJSON - 一类MyClass,我可以重新定义MyClasstoJSON,还是我坚持在myMixin定义的行为?

对于任何有兴趣的人来说,博客是一个很好的信息来源吗?将Ruby mixin与C#接口进行比较是否合理?

回答

1

不,你没有被卡住,你可以使用更多的mixin模块重写该方法,或者在包含mixin后重新定义方法。

您可以在新方法中决定通过调用super来让mixin处理它,就像继承一样。

因为你来自C#背景,所以你应该了解Ruby,因为ruby的方法永远不会“卡住”。在任何时候,你都可以重新定义方法,甚至是核心语言类,比如Object或Class。这很危险,但可能。你可以通过编程来改变语言,创建新的类或者进行其他元编程巫术。在一个类将总是通过在一个模块中的Ruby

例如覆盖混合到类方法定义

-1

include使得模块你混合成的类的父类。很显然,你可以在子类中重写超类的方法,这就是子类化的工作方式,不仅仅在Ruby中,而且在几乎任何其他基于类的OO语言中也是如此。

+0

据我了解'class Child evanmcdonnal

+0

@evanmcdonnal:Mixins和接口之间没有任何关系。 mixin是一个通过其超类进行参数化的类。这就是mixin应用程序在所有语言中的工作方式,常见且不常见,支持mixin。 –

相关问题