public abstract 行動 strategy {get;} を
public override 料理 strategy {get;} に上書きしたいです。

まとめるとこうです。
1.オブジェクトの行動を戦略ポリモーフィズムで実現したい
2.継承クラスから戦略をジェネリックに呼び出したい
3.基底クラスの戦略呼び出しは継承クラスの戦略を呼び出す(abstract)
4.ジェネリックの共変性(.net3.5を利用)の問題で3を基底<T>およびメンバTとするのは、
  その他のオブジェクトでキャストが膨大に発生するため、ジェネリックを持たない基底クラスを用意した