Ruby中超类的实例对象

Ruby中超类的实例对象,ruby,Ruby,我有点理解Ruby中的对象链图,如本例所示: class C def initialize @vc = 1 end def a_method 'C#a_method' end end class D < C def initialize @vd = 1 super end end obj = D.new C类 def初始化 @vc=1 结束 defa_方法 “C#a#U方法” 结束 结束 D类

我有点理解Ruby中的对象链图,如本例所示:

class C

  def initialize
    @vc = 1
  end

  def a_method
    'C#a_method'
  end
end

class D < C
  def initialize
    @vd = 1
    super
  end

end

obj = D.new
C类
def初始化
@vc=1
结束
defa_方法
“C#a#U方法”
结束
结束
D类
object
obj
指向他的单例类
#obj
(右方向),然后这个单例类
#obj
指向D,D指向C(向上方向)


我的问题是,是否有C类的对象被创建并成为其中的一部分 这个图表

这个物体的意义是什么?我可以参考一下吗?有什么意义吗 因为我可以访问它的实例变量和 来自
obj
的实例方法

超类主要用于提供实例方法吗?也就是说 我们通常不需要初始化方法和实例变量 在超类中


谢谢。

我不熟悉编译器如何解释您示例中的指令,因此我不确定是否实际创建了C类对象,尽管我不这么认为。发生的是类D继承了类C的方法和属性。一个粗略的简化是,当您引用类D实例的属性或方法时,实际上使用的是类D和类C

继承的使用完全取决于您的用例。在某些情况下,使用超类“
initialize
方法是有利的,而在其他情况下则不会。您的用例并不十分清楚,也许如果您让我们知道您想要实现什么,我可以为您指出正确的方向。

“我的问题是,是否创建了C类对象并成为此图的一部分?”

是的,就在Ruby解释的那一刻:

class C
end
它创建了一个对象,具有对象id和全部

C.object_id  # => 10744340
这个C对象没有什么特别之处,它只是一个实例:

C.class # => Class
“我可以引用它吗?引用它有意义吗?因为我可以从obj访问它的实例变量和实例方法。”
是的,我们只做了两次。

你是说创建了@vc=1的对象?我如何引用它?