1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

オーバライド

Last updated at Posted at 2024-12-01

オーバーライドとは

親クラスにあるメンバを子クラスで上書きすること

サンプルプログラム(親クラス)

public class Hero {
    String name = "ミナト";
    int hp = 100;
    //戦う
    public void attack(Matango m) {
        System.out.println(this.name + "の攻撃");
        m.hp -= 5;
        System.out.println("5ポイントのダメージを与えた!");
    }
    //逃げる
    public void run() {
        System.out.println(this.name + "は逃げ出した!");
    }
}

オーバライド

親クラスで定義されているrun()「逃げ出した」を、子クラスで「撤退した」に書き直したい場合、子クラスで再度run()を定義すればよい。
Javaではオーバライドするメソッドには @Override アノテーションを付けます。

サンプルプログラム(子クラス)

public class SuperHero extends Hero {
    @Override
    public void run() {
        System.out.println(this.name + "は撤退した");
    }
}

オーバーライドの説明

上記のプログラムにおいてHeroクラスですでに定義されているメンバrun()をSuperHeroクラスでも定義している。
これにより、形式上run()を上書きできるのである。

継承やオーバーライドの禁止

クラス宣言にfinalをつけると継承を禁止でき、メソッド宣言にfinalをつけるとオーバーライドを禁止できる。

親インスタンス部へのアクセス

親インスタンス部分のメソッドやフィールドに子インスタンスからアクセスするには

super.フィールド名
super.メソッド名

のように書く。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?