さて

7 02 2010
共変戻り値のてすと

  1. class Alpha{
  2.     Alpha doStuff(){
  3.         return new Alpha();
  4.     }
  5. }
  6. public class Beta extends Alpha {
  7.     Beta doStuff(){
  8.         return new Beta();
  9.     }
  10.     public static void main(String[] args){
  11.         Beta beta=new Beta();
  12.         if(beta.doStuff() instanceof Beta){
  13.             System.out.println("Beta型です");
  14.         }
  15.         Alpha alpha=new Alpha();
  16.         if(alpha.doStuff() instanceof Alpha){
  17.             System.out.println("Alpha型です");
  18.         }
  19.         Alpha alta=new Beta();
  20.         if(alta.doStuff() instanceof Beta){
  21.             System.out.println("Beta型です");
  22.         }
  23.     }
  24. }
  25. //Beta型です
  26. //Alpha型です
  27. //Beta型です

つまりだー
オーバーライドは戻り型も正確に一致させないといけないはずなんだけど
Java1.5ではスーパークラスのメソッドに宣言された戻り値型のサブタイプに変更するのはOKなんだってー

広告

操作

Information

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中




%d人のブロガーが「いいね」をつけました。