クラスの継承・オーバーライド

NodeJS

継承

あるクラス(=親クラス)を元に新しいクラス(=子クラス)をつくることを「継承」と言います。

継承することで効率的にプログラムを書くことができます。

sub.py

class Parent:
    def __init__(self, age):
        self.age = age
    def info(self, age):
        result = '彼の年齢は' + str(self.age)
        return result

main.py

from sub import Parent

class Child(Parent): # class 子クラス名(親クラス名):
    def school(self): # 子クラスだけのメソッドを追加できる
        -- 処理 --

child1 = Child('john', 12)
print( child1.info() ) # 子クラスではinfoメソッドを定義してないけど、親クラスで定義しているから使える
print( child1.school() ) # 子クラスだけのメソッドも当然使える

オーバーライド

親クラスにあるメソッドと同じ名前のメソッドを定義することで「メソッドの上書き(オーバーライド)」ができます。

sub.py

class Parent:
    def __init__(self, age):
        self.age = age
    def info(self, age):
        result = '彼の年齢は' + str(self.age)
        return result

main.py

from sub import Parent

class Child(Parent):
    def __init__(self, age, school):
        super().__init__(age)
        self.school = school
    
    def info(self): # 親クラスのinfoメソッドを上書きする
        return 'no infomation'

child1 = Child('john', 12, 'xxx highschool')

__init__をオーバーライドするときは、親クラスと全く同じ部分はsuper()を使って省略できます

super().__init__(age)と書くことで、self.age = age と書いたことと同じになります。

BACK