オーバーロードとオーバーライドの違いをまとめました

B!

オーバーライド

オーバライドとは親クラスで定義したメソッドを子クラスで子クラス専用のメソッドに書き換える技です。

Javaでは継承をよく使用するのですが、親クラスのメソッドを子クラス用にアレンジしたいなって時に使います。

下記コードはAnimalクラスを継承したDogクラスでAnimalクラスのSpeakメソッドを書き換えています。

public class Animal {
    public void Speak(){
    System.out.println( "......" );
  }
}

public class Dog extends Animal{
  //オーバーライド
  public void Speak(){
    System.out.println("わんわん");
  }
  public static void main(String args[]){
    Dog dog = new Dog();
    dog.Speak(); //わんわんが出力
}
注意!
引数、型、メソッド名が全て同一でないとオーバーライドできない。

オーバーライド

オーバライドとは引数の違いによって同一のメソッドを呼び出した時に違う処理をさせる技です。

本来であれば処理内容が異なれば別メソッドを用意しなければいけないのですが、オーバライドの技術を使用すれば呼び出し時に引数の数に違いをもたせればいいだけです。

メソッド名は同一なのに処理内容を変更できるのがオーバライドの強みですね!

下記コードは引数が一つある場合の処理と2つある場合の処理です。

public class Animal{
  public void Speak(int i){
    System.out.println("一人で黙々と眠る");
  }

  public void Speak(int i , int y){
    System.out.println("二人で仲良く眠る");
  }
  public static void main(String args[]){
    Animal animal = new Animal();
    animal.Speak(1); //"一人で黙々と眠る"が出力
    animal.Speak(1,2); //"二人で仲良く眠る"が出力
  }
}
注意!
オーバーロードでは、引数の型や並び順でも異なる処理を記述することができます。
そのためメソッドの呼び出し時には型の種類や順番に気をつけて引数に指定しましょう!
最新の記事はこちらから