Как реализован метод "public/protected/private", и как я могу его эмулировать?

В ruby можно сделать так:

class Thing
  public
  def f1
    puts "f1"
  end

  private
  def f2
    puts "f2"
  end

  public
  def f3
    puts "f3"
  end

  private
  def f4
    puts "f4"
  end
end

где теперь f1 и f3 - public, а f2 и f4 - private. Что происходит внутри, что позволяет вызывать метод класса, который затем изменяет определение метода? Как я могу реализовать ту же функциональность (якобы для создания собственных java-подобных аннотаций)

например...

class Thing
  fun
  def f1
    puts "hey"
  end

  notfun
  def f2
    puts "hey"
  end
end

а fun и notfun изменили бы следующие определения функций.

Thanks

5
задан Andrew Grimm 27 March 2012 в 23:20
поделиться