我认为对象是每个人的祖先,包括Class。 所以我认为它应该是Class.class == Object。 我觉得有点困惑和扭曲
答案 0 :(得分:10)
类返回类(#type)而不是祖先。对象的类是Class。班级是班级。类是一个对象。广告中的真相:我从未学过Ruby,但是对象类关系已经成为30年前提出的Smalltalk。
答案 1 :(得分:9)
Class,Object,Module和所有其他类是类类的实例:)
Class.class == Module.class == Object.class == Hash.class == Class
Class也是一个Object(与系统中的任何其他对象一样),但它不是Object的 direct 实例,它是派生类的实例(在这种情况下的类)
Class.superclass.superclass == Object(模块位于中间)
对象本身也是一个类。所以Object.class == Class
Class,Module和Object具有循环依赖关系,因为它们位于OO模型的核心。
Object.class.superclass.superclass == Object
=> parent (.superclass)
-> instance-of (.class)
alt text http://www.grabup.com/uploads/b10b2ffa9976953e3d6f88e6fcbf6f28.png?direct
答案 2 :(得分:6)
Object
的课程为Class
(因为Object
本身就是一个类),Object
是Class
的祖先。
有一个循环引用,它非常复杂。我个人的建议,如果你真的不需要玩它,就不要去那里。
答案 3 :(得分:5)
这是它在ruby 1.9中的工作方式:
Class.class = Class
Class.superclass = Module
Module.class = class
Module.superclass = Object
Object.class = Class
Object.superclass = BasicObject
BasicObject.class = Class
BasicObject.superclass = nil