有馬です。

matz / zetabits.com (Yukihiro Matsumoto) wrote
  "[ruby-list:26052] Re: def foo(arg=@member)"

| initializeを呼び出すと言うことは、オブジェクトを初期化すると
| いうことですよね。既に初期化されたオブジェクトををもう一度初
| 期化するとまずいことがおきがちです。

インスタンス生成時に内部状態を設定する目的で initialize を使う。
これは new から呼ばれるためのものとして特別扱いして、
public でも protected でもなく private である。
もし内部状態の再初期化が行いたいなら、method を別に用意すればよい。
組込みクラスで initialize を呼ばないものもある。
という理解でよいですか?

ところで Delphi だと constructor は、インスタンス生成後に初めて呼ばれる
method というだけなので再初期化に使えます。使ったことはないですが。

  foo := TFoo.create;  // 生成
  foo.create;          // 再初期化

--
 有馬 康弘 <fit0298 / fitec.co.jp>