ためになるホームページ お問い合わせ




TOP > Java > 戻り値型
オーバーロードの戻り値の型
オーバーロードメソッドは引数を変更しなければならない。戻り値の型は何でもよい。

オーバーロードの戻り値の型の例
class Sub{
    void method(int a) {}
}
class Test extends Sub{
    //オーバーロード
    void method(float a){}

    //オーバーロード
    int method(){
        int a = 2 ;
        return a ;
    }

}


オーバーライドの戻り値の型
オーバーライドメソッドは引数と戻り値の型が一緒。変える事はできない。

無効なオーバーライドの例
class Sub{
    void method(int a) {}
}
class Test extends Sub{
    int method(int a){
        int a = 2 ;
        return a ;
    }
}


このコードはコンパイルできない。引数が一緒で戻り値が異なるので、オーバーライドとは言えない。

値を返す規則
  • 戻り値の型がオブジェクト参照のメソッドでは、nullを返す事ができる。
  • 配列も完全に有効な戻り値型である。
  • 戻り値の型が基本型の場合、暗黙的に変換できるものなら値を返すことができる。
  • 戻り値の型が基本型の場合、宣言した戻り値に明示的にキャストできるものであれば、どのような値も返す事ができる。
  • 戻り値の型がvoid型の場合、何も返してはいけない。
  • 戻り値の型がオブジェクト参照のメソッドは暗黙的にキャストできる場合、どのようなオブジェクトも返す事ができる。

  • 値を返す規則の例
    class Test{
        //nullを返す
        Test methodA(){
            return null ;
        }
    
        //配列を返す
        int[] methodB(){
            int[]a = {1,2,3} ;
            return a ;
        }
    
        //暗黙的変換
        int methodC(){
            byte b = 3 ;
            return b ;
        }
    
        //明示的キャスト
        int methodD(){
            float f = 3.23f ;
            return (int) f ;
        }
    
        /*コンパイルエラー
        void methodE(){
            return "this" ;
        }
        */
    }
    
    

    値を返す規則の例2
    class Super{}
    
    class Test extends Super{
        //Test IS-A Sub
        Super method(){
            return new Test() ;
        }
    }
    
    
    
    interface Inter{}
    
    class Test2 implements Inter{
        //Test2 IS-A Inter
        Inter method(){
            return new Test2() ;
        }
    }
    
    






    Copyright 2007 ためになるホームページ All Rights Reserved.