D Aはアクセス修飾子がより狭い範囲になっている。 Bは引数構成が違う。Cは戻り値型が違う。 B Bar型をFoo型にアップキャストして使っているので、 Bar型でオーバーライドしたprintメソッドが起動する