概要
Class | inherited
詳細
Class#inheritedは継承された時に呼び出される処理です。
引数には呼び出した継承側クラスが渡されます。
サンプル
仕様
クラスの継承の際に、基底クラスに継承側クラスのメソッド呼び出しを登録します。
継承時点ではメソッドは存在していないため、
文字列として保持し別途定義したメソッド(execute_children)から呼び出します。
コード
# encoding: utf-8 class Hoge class << self attr_accessor :child_methods def inherited(sub) @child_methods ||= [] sub_name = sub.name @child_methods << "#{sub_name}.new.#{sub_name.downcase}" end def execute_children child_methods.each {|m|class_eval m} end end end class Hage < Hoge def hage puts "hage" end end class Hige < Hoge def hige puts "hige" end end Hoge.execute_children
出力
hage hige