【Java】オーバーライドとは

オーバーライドとは、日本語にすると無効にするという意味になります。

Javaのオーバーライドも同様です。では、何をオーバーライドするのか。

本記事では、Javaのオーバーライドについて紹介します。

オーバーライドとは

親クラスを継承した子クラスを宣言する際、親クラスのメンバを子クラス側で再定義(上書き)すること

以下の例では、親クラスのactionメソッドを子クラスでオーバーライドしています。

public class Parent{
    public void action(){
        System.out.println("This is Parent's action.");
    }
}
public class Child extends Parent{
    public void action(){
        System.out.println("This is Child's action.");
    }
}
public class Main{
    public static void main(String[] args){
        Parent parent = new Parent();
        parent.action(); // This is Parent's action.
        Child child = new Child();
        child.action(); // This is Child's action.
    }
}

オーバーライドの禁止

親クラスのメンバにfinalをつけることで、継承した子クラスでオーバーライドはできなくなります。

public final void action(){
     //処理
}
 error: action() in Child cannot override action() in Parent
    public void action(){
                ^
  overridden method is final

オーバーライドすることで、親クラスと子クラスで同じメソッド名で違う処理を行うことができます。

因みに、似たような言葉として、オーバーロードがありますが、全く違う意味です。