それでいいんですかぃ? のつづき。
拡張メソッドによるなんちゃって多重継承に風穴を空けてみた。
Android RTI = new Android();
RTI.move();
IMachine m = RTI; m.move();
IHuman h = RTI; h.move();
IMachine/IHumanにキャストしただけで
Androidの歩き方を忘れちゃいます。
正統(?)多重継承(C++)だと:
#include <iostream>
class Machine {
public:
virtual void move()
{ std::cout << "計算機がモーターを制御します\n"; }
};
class Human {
public:
virtual void move()
{ std::cout << "神経系が筋肉を制御します\n"; }
};
class Android : public Machine, public Human {
public:
virtual void move()
{ std::cout << "ギコギコ歩きますー\n"; }
};
int main() {
Android RTI;
RTI.move();
Machine* m = &RTI; m->move();
Human* h = &RTI; h->move();
};
ちゃんと継承してるんで、ちゃんと"ギコギコ"歩きます。