継承を考えるとき、ベースのクラスを、
インターフェースとAbstractどちらを選べばいいか良く分かりません。

Collection、Listはなぜインターフェースをとったのでしょうか?
ある程度上位で決まった動作があれば、抽象クラスにしてもいいのではないかと思うのですが。