見出し画像

JavaのOverrideとOverload

こんにちは!Javaの自学者、ミキ鴨です。今日、JavaのOverrideとOverloadを紹介させていただきます。(笑)


Override

1.定義:
Super Classから継承する際に、Sub ClassはSuper Classにおけるアクセス可能な方法を、Sub Classの状況に応じて再定義する。Overrideに、戻り値と引数リストはSuper Classのと一致しなければならない。

2.目的・メリット:
Sub Class自身の状況を適用するため。

3.Exception
Sub Classには、Super ClassにないExceptionを発行できない。

また、Super Classにより範囲広いExceptionを発行できない。

4.アクセス修飾子
Sub ClassはSuper Classのアクセス修飾子権限と同じか、それよりも広いものを使える。

5.同じパッケージに
Private \ final \ staticを付ける方法以外、Sub ClassはSuper Classにのすべての方法をOverrideできる。

6.異なるパッケージに
Super ClassにのProtected \ Publicをつけ、非finalと非Staticの方法を、Sub ClassはOverrideできる。

7.finalとstaticをつけるメソッド
両方もOverrideできない。ただし、staticをつけるメソッドは再宣言できる。

8.Constructor(コンストラクタ)
Super ClassのConstrutorをOverrideできない。

9.Super修飾子
Super Classのメンバ・メソッドとメンバ変数を、Sub Classの方法に使用したい際に、「Super.メンバメソッド名」、「Super.メンバ変数」として指定してアクセスする。

Overload


1.定義
同じClassに、同じ名前のメソッドを異なる引数リストとメソッド実体を再定義すること。

2.引数リスト
必ず異なる。

3.戻り値
同じか、異なるかでもいい。

4.よく使うところ
Construtor

5.Exception
より範囲広いExceptionを発行する可能。

6.アクセス修飾子
制限なし。

7.Overloadの基準
引数リストの変更である。戻り値とならない。

public class X {
   /*Overload method() Example*/
   //1. アクセス修飾子:default 戻り値:void 引数リスト:なし
   void method(){
       System.out.println("Hello world");
   }
   
   
   //2.アクセス修飾子:public 戻り値:void 引数リスト:int a
   public void method(int a){
       System.out.println(a);
   }
   
   
   //3.アクセス修飾子:protected 戻り値:long  引数リスト:long a
   protected long method(long a){
       return a;
   }
   
   //4.アクセス修飾子:private 戻り値:void  引数リスト:double a
   private void method(double a){}

   // 5. Overloadの基準は戻り値によることでない、引数リストである。
   // Error: 'method()' is already defined in 'X'.
   // long method(){
   //    long a = (long) 0.0;
   //    return a;
       
   }
}



OverrideとOverloadのことを簡単に紹介いたしました。

ご覧になってありがとうございました。


この記事が気に入ったらサポートをしてみませんか?