目次
(確認環境:Python 3)
オーバーライドとは
- クラスを継承したときに使用できます。
- 親クラスで定義したメソッドを、子クラスで同じメソッド名を記述して処理内容を上書きすることです。
- オーバーライドするメソッドは、引数、戻り値の型が同じである必要はありません。Javaなどの言語と異なります。
→Pythonにはオーバーロードはありません。
オーバーライドのサンプルです。
class Color1:
def getName1(self):
return "赤"
class Color2(Color1):
def getName1(self):
return "青"
c2 = Color2()
print(c2.getName1()) # 青
1~3行目は親クラスです。
5~7行目は子クラスです。
6行目がオーバーライドです。2行目とメソッド名が同じです。
11行目のメソッドの実行は、オーバーライドのため親クラスのメソッドではなく、子クラスのメソッドが実行されます。
子クラスから親クラスのインスタンスを参照する(super)
子クラスから親クラスのインスタンスを参照するサンプルです。
superを使用してオーバーライドした子クラスのメソッドから親クラスのメソッドを呼びます。
class Color1:
def getName1(self):
return "赤"
class Color2(Color1):
def getName1(self):
print(super().getName1())
return "青"
c2 = Color2()
print(c2.getName1()) # 赤 青
6行目は、2行目のメソッドをオーバーライドしています。
7行目は、superを使用して親クラスのメソッドを呼んでいます。
12行目は、親クラスと子クラスのメソッドの実行結果が表示されます。
関連の記事
