新手问题 饿补 Ruby 基础之 --- 类之间的继承关系模糊了

small_fish__ · 2012年10月26日 · 最后由 fsword 回复于 2012年10月26日 · 4902 次阅读

截图如下:

alt text
我想请问下,既然 Class 的父类是 Module,那 Module.class 就应该是 Module 赛,为什么还是 Class 呢?


顺便@huacnlee,为什么在发贴的时候,里面还保存了上次发贴的内容呢?我记得我是发贴成功了的哦。。。。这个功能应该是做自动保存的吧,毕竟谁也不想写了一大段后,结果意外没有发布成功,而内容又丢失了。既然如此,那么个人觉得在成功发贴后,就可以将保存的最新发贴内容删掉了吧。

嗯?照这样的逻辑,应该是 BasicObject 了。。。 =.=

楼主你果然混乱了,看下面的代码:

class Parent
end
class Child < Parent
end

Child.superclass    #=>   Parent
Parent.class    #=>   Class

如你所问:Child 的父类是 Parent,那 Parent.class 就应该是 Parent ? 完全不明白你在想什么了。

#2 楼 @zzhattzzh 我其实不在乎 module.class 是什么,只是觉得 Class.superclass 既然都是 Module 了,那 Module.class 怎么又成了 Class,那按照这个意思的话,Parent.class 就成了 Child 了

.superclass 是讲继承的关系 .class 是将 类与实例的关系 这是两种不同的关系,楼主搞混了。

要区别类和对象。Module.class 是说的 Module 对象,可以看 Module.object_id。 superclass 是继承关系,是类的关系。 容易混淆。

#4 楼 @xuluan 哦,渐渐的懂了~

Class 的父类是 Module (001);Module 的父类是 Object (003);Object 的父类是 BasicObject (005);BasicObject 没有父类 (007)。 Module 是一个类 (002);Object 是一个类 (004);BasicObject 是一个类 (006)。

#4 楼 @xuluan 言简意赅,很多人的问题其实就是没弄清楚继承和实例化的不同

需要 登录 后方可回复, 如果你还没有账号请 注册新账号