D

・スーパークラス型の変数に具象サブクラス型のインスタンス(参照)を代入できる
・Cはnewで生成するという意味なので、できない

A C F

・インタフェースを実装することにより、オーバーライドしなくてはいけなくなったメソッドを作成しているかどうかで判断する。

A – RunnableとSortableを実装しているので、run()、sort()を作成する必要がある
B – Visibeleを実装しているので、run()、sort()、disp()を作成する必要がある
C – Sortableを実装しているので、sort()を作成する必要がある
D – Visibleを実装しているので、run()、sort()、disp()を作成する必要がある
E – Runnableを実装しているので、run()を実装する必要がある
F – Visibleを実装しているので、run()、sort()、disp()を作成する必要がある

この点から、A、C、F だけが必要なメソッドをすべて作成しているので正しい実装になる。
必要なメソッド以外のものを作成していても、それはオーバーライドではなく、普通のメソッドとして作成したものとみなせるので、間違いではない。例えば、Cでは、sort()がオーバライドで、run()とread()は普通のメソッドである。

A

mainメソッドでは、w.read(); を使っているが、
Writableインタフェースにはreadメソッドがない