C#3.0
もう継承はいらないな。たとえば、
abstract class Human { public abstract void Eat(); public abstract void Sleep(); } これと、 class Human { public Action Eat{ get; set; } public Action Sleep{ get; set; } } これならば、後者は実行時に動作を入れ替えたり、組み合わせたりできる上に、クラス外の変数も必要とあらば使用できる。 abstract class Eat{ public abstract void Eat(); } abstract class Sleep{ public abstract void Sleep(); } class Human { public Eat eat; public Sleep sleep; public void Eat(){ eat.Eat(); } public void Sleep(){ sleep.Sleep(); } } 後者の実質は大体こんな感じに近い。そしてラムダ式やなんかを使えば、Eatを継承したクラスが一瞬で作れる。