親クラスのメソッドを書き換える!「オーバーライド(Override)」とは?
Javaのオブジェクト指向には、継承という仕組みがあります。
その中で、親クラスのメソッドを子クラスで上書きして振る舞いを変えることを「オーバーライド(Override)」といいます。
オーバーライドとは?
オーバーライドとは、親クラスにあるメソッドを子クラスで再定義して上書きすることです。
同じメソッド名・引数・戻り値の型を使いながら、中身の処理だけを変更できます。
基本構文
class 親クラス {
public void greet() {
System.out.println("こんにちは!");
}
}
class 子クラス extends 親クラス {
@Override
public void greet() {
System.out.println("Hello!");
}
}
使用例
public class Main {
public static void main(String[] args) {
親クラス obj1 = new 親クラス();
obj1.greet(); // → こんにちは!
子クラス obj2 = new 子クラス();
obj2.greet(); // → Hello!
}
}
@Overrideアノテーション
Javaでは、オーバーライド時に @Override
をメソッドの上に書くのが一般的です。
これは書き間違いの防止や可読性の向上につながります。
オーバーロードとの違い
項目 |
オーバーライド |
オーバーロード |
意味 |
親クラスのメソッドを上書き |
同じクラス内で引数違いのメソッドを複数定義 |
メソッド名 |
同じ |
同じ |
引数 |
同じ |
異なる |
戻り値 |
基本的に同じ |
同じ or 異なる |
superキーワードと併用
親クラスの処理を残しつつ、子クラスで追加処理をすることも可能です。
@Override
public void greet() {
super.greet(); // 親のメソッドを呼び出す
System.out.println("Hi there!");
}
まとめ
オーバーライド(Override)は、親クラスのメソッドを子クラスで上書きする仕組みです。
同じ名前・引数・戻り値で定義し直すことで、継承の柔軟性を活かした設計が可能になります。
@Override
をつけて、明示的にオーバーライドしていることを示す習慣を身につけましょう!