今回の記事はJavaで使用される「オーバーライド(Override)」とは何かという記事です。Java初心者にとってサンプルコードなどで「@Override」が出てきても意味を知らずに使用している方は多いと思います。私もそうでした。初学者でも分かりやすいように記載していくので是非参考にしてみてください。
オーバーライド(Override)とは?
Override(オーバーライド)とはクラスを継承する時に、スーパークラスのメソッドをサブクラスにおいて同じメソッド名で定義し直す際に記述します。
ルールとしてはメソッド名、メソッドの引数の順番は同じである必要があります。
また「super」句を使うと、スーパークラスで定義したメソッドを簡易的に使えます。
では今回は実際にスーパークラス、サブクラスとそれを呼び出すMainクラスを使って上記の動きを実装しつつ解説していきます。
オーバーライド(Override)の使い方
下記1ファイルに全てクラスを記載しています。通常はクラスごとにファイルを分ける方が望ましいです。
package org.example;
public class Main {
// 親クラスからそのままメソッドを呼ぶ
SuperClass superClass = new SuperClass();
superClass.printCalcuration();
// 親クラスを継承したサブクラスのインスタンスを作成し、オーバーライドしたメソッドを呼ぶ
SubClass subClass = new SubClass();
subClass.printCalcuration();
}
}
// スーパークラス
class SuperClass {
protected int i1 = 3;
protected int i2 = 5;
public void printCalcuration(){
System.out.println("i1 + i2 = " + (i1 + i2));
}
}
// サブクラス
class SubClass extends SuperClass{
// 処理を書き換える
@Override
public void printCalcuration(){
// super句を使ってみる
super.printCalcuration();
// 掛け算を行なってみる
System.out.println("i1 * i2 = " + (i1 * i2));
}
}
出力としては下記のような出力になります。
i1 + i2 = 8
i1 * i2 = 15
i1 + i2 = 8
- スーパークラスで普通にインスタンスを作成し、スーパークラスのメソッドを使った時の出力
- スーパークラスを継承したサブクラスでsuper句を使ってスーパークラスのメソッドを使った出力
- オーバライドさせた処理によってサブクラスから出力させた出力
では今回の記事は以上です。他にも多数のJava関連の記事を記載しています。是非興味ある方はサイト内見て行ってください。
コメント