Ruby Class & SuperClass

williamherry · 2012年08月01日 · 最后由 zw963 回复于 2012年08月01日 · 3934 次阅读

谁给简单说一下 class 和 superclass 到底有什么不同吗,找到一篇文档,看的不是太懂

http://sermoa.wordpress.com/2011/06/19/ruby-classes-and-superclasses/

superclass 不就是 class 的爸爸吗?

你的意思是一个东西 X.superclass==X.class.class,这个好像并不成立哦

lz 把实例和类搞混了

class A
end
class B < A
end
b = B.new
b.class == B
b.class.superclass==A
实例和类要区分,Class中定义了superclass,所以B中有(B是Class的实例),但是b中没有
类也是对象,这里可能混淆了
B.superclass==A
A.superclass==Object
A.class==Class
B.class==Class
Object.class == Class
B.class.superclass==Module
Class.superclass==Module
Class.class==Class
Module.superclass==Object
Module.class==Class
superclass只在Class的实例中有
class是Object中定义的,Object的实例都有class
类的最终父类是(Basic)Object,类是Class/Module的实例

我试着理解一下

b.class == B  # => b是B的实例
B.class == Class  # => B是Class的一个实例
A.class == Class  # => A也是Class的一个实例

B.superclass  == A  # => B从A继承而来
A.superclass == Object  # => A从Object继承而来

也就是说 class 表达的是类与实例的关系 superclass 只用于类,表达的是继承的关系,不知道理解的对不?

#4 楼 @williamherry 能讲通就是对了

非常感谢@ Rei 和@jjym , 这个社区真活跃

我被这个问题雷住了... 呵呵。

#1 楼 @Rei

你的头像,让我想起了日本电影 咒怨

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