目指そうかなRubyist RSSフィード

 | 

2011-06-11

[meta] include時の継承チェーン  [meta] include時の継承チェーン - 目指そうかなRubyist を含むブックマーク はてなブックマーク -  [meta] include時の継承チェーン - 目指そうかなRubyist  [meta] include時の継承チェーン - 目指そうかなRubyist のブックマークコメント

module Printable
  def print; end
end

module Document
  def print; end
end

class Book
  include Document
end

class Book2
  include Document
  include Printable
end

Book.ancestors # => [Book, Document, Object, Kernel, BasicObject]
Book2.ancestors # => [Book2, Printable, Document, Object, Kernel, BasicObject]

include Documentした際にはBook2の上にDocumentの継承チェーンを作る。include Printableの時にBook2の上にPrintableが配置され、Documentはひとつ上に押し上げられる。なので、例えばBook2でprintメソッドを呼び出した場合はPrintableモジュールのprintが実行される。

 |