Delphi/Kylix Tech 2nd

このエントリーをはてなブックマークに追加
131turbo type D
クラスメソッドの機能はしってますよ。
それを抽象化して継承して実装する時の場面が想像できないの。

それに、
>クラスメソッドは、グローバルな関数をクラスに含めたい場合に使用してます。
>あるクラスに綿密に関連する関数で、グローバルにしとくのは気分的にイヤだなってときですね。
それって、単なるクラスメンバーで実装していいのでは?
132デフォルトの名無しさん:2001/07/04(水) 01:46
>>131
VCLで最初から使われている例として、
class function NewInstance: TObject; virtual;
なんてのがありますね。
これからCreateされるInstanceのメモリ領域を取る方法「を」
overrideできるわけだ。

「インスタンスは存在してない」時点で使うメソッドであり、
かつ「クラスごとに違う挙動にしたい」けど「クラスごとに
違う名前の(=別の)メソッドにはしたくない」という場合、
クラスメソッドをvirtualにするのが美味しい手です。

C++やJavaには出来ない芸当なんだな(^^;
というか、これを擬似的に実現するために
わざわざデザインパターン(AbstractFactoryだっけか?)を
引っ張り出さないとならないわけね。
delphiなら一発!delphiまんせー

ちなみにNewInstanceについて言えば、C++だと
new演算子のoverloadで似たようなことを実現
したりしますね。
ただ、俺ぁDelphi方式のほうがモダンかつシンプル
だとは思うのだが。

蛇足だがObjectiveCもdelphiと同じ手が使えるようだ。
delphiの直系の先輩はObjectiveCなんじゃないかな。
ObjectiveCよりちょっとだけ静的型寄りに振った言語がdelphi。