Object上的私有实例方法与Ruby中的其他类不同

时间:2013-11-18 06:28:56

标签: ruby

这是我使用Object类的代码继承:

class Object
  private
  def talk
    puts "hi there"
  end
end

class Child
  talk  # outputs 'hi there'
end

这是我的代码继承与一个新类:

class Parent
  private
  def talk
    puts "hi there"
  end
end

class Child < Parent
  talk #`<class:Child>': undefined local variable or method `talk' for Child:Class (NameError)
end

为什么这会有不同的表现?

1 个答案:

答案 0 :(得分:2)

在这两个示例中,您都在talk的上下文中调用Child,这是Class类的实例。

在第一个示例中,实例方法talkObject类上定义,Class是其中的子类。

在第二个示例中,实例方法talkParent类上定义,Class不是它的子类。