オーバーライド時のメソッドの戻り値型は、戻り値型が参照型(要するにクラス)であれば、スーパークラスのメソッドが宣言している戻り値型のサブタイプを戻り値型として宣言可能。
この形式の戻り値型を共変戻り値型と呼ぶ。
public interface Sample { public Object method(); } class SampleImpl implements Sample { public String method() { return "A"; } }
StringはObjectのサブタイプなので、こんなコードがOKということであります。
なお共変戻り値はJDK5.0よりサポート。それ以前だとコンパイルエラーになる。
コメントを残す