リファレンスのinitializeメソッド解説を見ても一回で理解できなかったので、ここにまとめておきます。
ユーザ定義クラスのオブジェクト初期化メソッド。
このメソッドは Class#new から新しく生成されたオブ ジェクトの初期化のために呼び出されます。他の言語のコンストラクタに相当します。 デフォルトの動作ではなにもしません。
initialize には Class#new に与えられた引数がそのまま渡されます。
サブクラスではこのメソッドを必要に応じて再定義されること が期待されています。
initialize という名前のメソッドは自動的に private に設定されます。
例えば、ゲームのキャラクターを作るときHPが100でなきゃいけない場合を考えます。キャラクターを新たに作るときにHPが0だったらすぐにゲームオーバーで話にならないですよね。そんなことにならないようにあらかじめHPを決めておきます。
これをinitializeを使って表現しますと
|
|
もちろんinitializeを使わなくてもできます。
|
|
この形でも問題ありませんが、チームでこのゲームを作っている場合、大本のMonsterを作っている人と個別のモンスターのpikachuやゼニガメを作っている人の間でミスが起こる場合があります。
ゼニガメのHPは200だと思い込んでたとか。それに何より初めからHPの値が決まっているならinitializeを使った方がいいに決まってます。
initializeメソッドはclassの中に入れておけば、newメソッドが実行される時に自動で動くので便利。