見出し画像

36歳が初めてプログラムを勉強してみる(27日目)

今日もpaizaでPythonの勉強しました。

今日学んだことです。

【学んだこと】

・メソッドのオーバーライドを学んだ

次のようなことをやりました。

【やったこと】

メソッドのオーバーライドを学んだ

今回はクラス継承を使っている時に利用できる、メソッドのオーバーライドについて学びました。

オーバーライドとはスーパークラスのメソッドと同じ名前をサブクラスで再定義することです。

分かりやすく言うと、スーパークラスに「習慣」というメソッドがあるとします。

そして、サブクラスでも同じように「習慣」メソッドを定義して使うことができるようになります。

【クラス継承方法】

class スーパークラス名:
def __init__(self):
self.変数1= "文字列1"
self.変数2= "文字列2"

def メソッド名1(self):
print(self.文字列1+ " " + self.文字列2)

class サブクラス名(スーパークラス名):
def メソッド名2(self, 変数3):
print(self.文字列1+ " " + 変数3)

オブジェクト名= サブクラス名()
オブジェクト名.メソッド名2("文字列3")

それでは実際のコードを見ていきましょう。

--コード--
class Routine:
  def __init__(self):
      self.msg = "hello"
      self.routine = "routine"

  def say_routine(self):
      print(self.msg + " " + self.routine)

class Shukan(Routine):
  def say_routine(self, shukan):
      print(self.msg + " " + shukan)


shukan= Shukan()
shukan.say_routine("習慣")


--出力結果--
hello 習慣

このコードでは、スーパークラスとして「Routine」を作っています。
Routineクラスの中には、helloという文字列の入った「msg」変数とroutineという文字列の入った「routine」変数を作成しています。

そして、「sa-_routine」メソッドを作成し、その中でprint関数で「msg」と「kintore」変数を出力しています。

次にサブクラスとして「Shukan」を作っています。
サブクラスでは、スーパークラスの「say_routine」をオーバーライドするため、同じ名前のメソッドを作成し、引数に「shukan」を追加してprint関数で、スーパークラスの変数「msg」と、オーバーライドした「shukan」を出力しています。

そして、サブクラスの「Shukan」から、「shukan」オブジェクトを作成し、「say_routine」メソッドに「習慣」という引数をつけて呼び出しました。

その結果、スーパークラスの「hello」とサブクラスでオーバーライドした「習慣」が出力されていますい。

このように、オーバーライドを使うことによって、サブクラスからスーパークラスのメソッドを再定義することができます。

本日はここまでです。

以上です。ありがとうございました。

この記事が気に入ったらサポートをしてみませんか?