module M def foo "module_foo" end end class C def foo "class_foo" end include M end puts C.new.foo
为什么C.new.foo实际上返回class_foo?我非常确定该方法应该被模块中的一个覆盖.另一件事情,用super替换“class_foo”使C.new.foo返回`“module_foo”
实际上看起来像模块是以某种方式包含在类实例方法被定义之前.你能澄清一下吗
In fact,mixed-in modules effectively behave as superclasses.
所以你的经历是正常的.你的模块M是C类的超类
因此,C类中的foo方法覆盖了模块M中的foo方法