ネタ元 → 多重継承について問うてみた
// C#が多重継承できたと思いねぇ
class 子 : 父, 母 { ... }
...違う、こうじゃないハズ。
interface I♂ {}
interface I♀ {}
interface I親 { IEnumerable<I子> 子供たち { get; } }
interface I父 : I親, I♂ {}
interface I母 : I親, I♀ {}
interface I子 {
I父 おとぉたま { get; }
I母 おかぁたま { get; }
}
interface I男の子 : I子, I♂ {}
interface I女の子 : I子, I♀ {}
...ダメなんだよね。
これじゃ子供はどんなに成長しようとも親になれない、お家断絶です。
生物としての親とか子とかは生物の属性あるいは状態なワケよ。
子ができたとたんに親状態に遷移するのよね。
# 性別はインスタンス生成時に固定されるけどさ。
なので自然界のアナロジーでオブジェクト指向を語るココロミは
極めて狭い枠組みに制限しないとあちこちボロが出る。
この例だと"成長/繁殖しない"という"ありえない制限"を与えにゃなりません。
わんくま東京勉強会で物議をかもした(?) 「ドラえもんモデル」では
ドラえもん は クラスなのかインスタンスなのかが揺れてたように思えます。
インスタンスとしてのドラえもん は クラスとしてのドラえもん の
シングルトン・インスタンス であったのかなー、とか。