オーバーライドされたメソッドの呼出し
オーバーライドされたメソッドはサブクラスのメソッドにより隠された状態となるが、サブクラスの構成要素として保持されている。この隠されたメソッドをsuper関数を用いて呼び出すことができる。
code:inheritance3.py
class Animal:
def __init__(self, name):
self.name = name
def talk(self):
print('私の名前は', self.name, 'です')
class Pig(Animal):
def __init__(self, name):
super().__init__(name)
print('継承したコンストラクタを使ってインスタンスを初期化しました')
def talk(self):
print('継承したメソッドを使って自己紹介:', end='')
super().talk()
def voice(self):
print('ブタはブーと鳴きます')
print('# 実験3')
p1 = Pig('Hana') # ハナ・インスタンス
p1.talk()
p1.voice()
この手法は、単にオーバーライドしてメソッドをサブクラス側で新たに再定義するのとは異なり、スーパークラスで定義されたメソッドへの機能追加として働く。上層クラスにおいては大まかな機能、下層クラスは細かい機能を実装するような、クラス間の階層関係を考慮した設計に適している。 code:Figure
Animal
├─ __init__
└─ talk
Pig(Animal)
├─ __init__(Animal) <-(呼出し) __init__(Pig)
├─ talk(Animal) <-(呼出し) talk(Pig)
└─ voice
https://scrapbox.io/files/652c89aed0f263001b8ec1b1.png
/icons/hr.icon
※ ブラウザのバックボタンで戻る