インスタンスがわかっていれば超簡単な概念
initializeメソッドが適用されるのは「インスタンスが生成される」タイミングです。
よって、「インスタンスとは?」を理解していれば全く難しくない概念なのです。
初期値を設定するためのメソッド
class Yamada def initialize @language = "japanese" end def check_language p "使用言語は#{@language}です。" end end tarou = Yamada.new jirou = Yamada.new tarou.check_language
上記のコードでは、インスタンスが生成されるたびに@language
の値を設定しています。
つまり、Yamada.new
が実行されるたびにinitializeメソッドが自動的に動くというわけです。
このコードを実行すると
"使用言語はjapaneseです。"
と表示されることが確認できるはずです。
最後の行にjirou.check_language
と追記して実行してみましょう。
こちらも同じ文章が追加で表示されることが確認できたはずです。
応用的な使い方
各インスタンスに共通の初期値を持たせる、という機能を応用してみましょう。
class Yamada #最初は子供は0人 @@children_count = 0 def self.children_counter #これがクラスメソッド p "山田家には子供が#{@@children_count}人います" end def initialize #インスタンスが作られる=子供が生まれるたびに1つカウントが増える @@children_count += 1 end def fire p "手から炎がでます" end end tarou = Yamada.new #tarouというインスタンス(子供)が生まれる jirou = Yamada.new #jirouというインスタンス(子供)が生まれる Yamada.children_counter #クラスに対してクラスメソッドを実行している
こちらは以下の記事で「クラス変数の使い方」として使用したコードです。
インスタンスが生成されるたびに自動的に実行される、という特性を活かし、
生成されたインスタンスの総数を数えることができるようになりました。
「共通の値を持つ」というのはこのような使い方もできるわけですね。