Как наследование работает в Ruby?

По словам Дэйва Томаса вего разговор о Ruby Object Modelнетметоды класса " в рубине. Есть только разница между тем, является ли получатель метода "объект класса " илиэкземпляр объекта ".

class Dave
  def InstaceMethod              ### will be stored in the current class (Dave)
    puts "Hi"
  end
  class < self                  ### Creates an eigenclass, if not created before
    def say_hello
      puts "Hello"
    end
  end
end
 [:say_hello, :metaclass]

Теперь о наследстве.

class B < Dave
end

p B.say_hello
# => "Hello"
p B.ancestors
# => [B, Dave, Object, Kernel, BasicObject]
p B.class.instance_methods(false)
# => [:allocate, :new, :superclass]

Следующее создаст новый собственный класс для:B

p B.metaclass.ancestors
# => [Class, Module, Object, Kernel, BasicObject]
p B.metaclass.instance_method(false)
# => []

Как быB.ancestors а такжеB.metaclass.ancestors выглядеть, когда собственные классы тоже включены? Методsay_hello хранится в собственном классе, (который я предполагаюB.class наследует) но где это?

Так как есть две цепочки предков (B.ancestors а такжеB.class.ancestors или жеB.metaclass.ancestors) как на самом деле происходит наследование?

Ответы на вопрос(3)

Ваш ответ на вопрос