【Python】メソッドのオーバーライド

親クラスで定義されているメソッドを子クラスで再定義することができます。これをオーバーライドと呼びます。オーバーライドとは英語で覆すという意味です。メソッドをオーバーライドするには親クラスでメソッドを定義する時と同じ書き方で子クラスにメソッドを記述します。

【Python】メソッドのオーバーライド

class 子クラス名(親クラス名):
    def 親クラスで定義されているメソッド名(self):
        処理

では実際に先ほどのMonsterクラスで定義されているattackメソッドをBoss_Monsterクラスでオーバーライドしてみましょう。

Monsterクラスではad変数の値をそのままダメージとして表示していましたが、Boss_Monsterクラスではad変数の2倍のダメージを与えることにしましょう。

class Monster:
    def __init__(self, name, ad):
        self.name = name
        self.ad = ad

    def attack(self):
        print(self.name + "は" + str(self.ad) + "のダメージを与えた")

class Boss_Monster(Monster):
    def attack(self): # attackメソッドをオーバーライド
        print(self.name + "は" + str(self.ad * 2) + "のダメージを与えた")

    def aura(self):
        print(self.name + "は禍々しいオーラを放っている")

shalltear = Boss_Monster("シャルティア", 500)
shalltear.aura()
shalltear.attack()

実行結果は次のようになります。

シャルティアは禍々しいオーラを放っている
シャルティアは1000のダメージを与えた

シャルティアの攻撃力は500のままなので、ad変数の値をそのままダメージとして表示するMonsterクラスのatacckメソッドではなく、ad変数の2倍の値をダメージとするBoss_Monsterクラスのattackメソッドが呼び出されているのがわかります。

このように親クラスと同じ名前のメソッドを子クラスで再定義するとメソッドをオーバーライドできます。

このエントリーをはてなブックマークに追加

コメントを残す

頂いたコメントは一読した後表示させて頂いております。
反映まで数日かかる場合もございますがご了承下さい。