覆寫(Overwrite)

class Cat:

    def __init__(self, name):
        self.name = name

    def jump(self):
        print(self.name+" 跳了一下")

    def __hair_less(self):
        print(self.name+" 禿頭")


class Mix(Cat):
    def __init__(self, name):
        super(Mix, self).__init__(name)

    def jump(self):
        super().jump()
        print("[Mix] "+self.name+" 跳了一下")

animal = Mix("噹噹")
animal.jump()
#print 噹噹 跳了一下
#print [Mix] 噹噹 跳了一下

在Cat這個類別中,我們有jump method

但他的繼承者也可以覆寫這個method,並且在執行父類別的jump基礎上再執行屬於自己的程式

只要透過super().method_name() 就可以執行父類別的函式

在Python中覆寫Method不強制一定要執行 父類別的函式

所以我們也可以這麼寫...

class Cat:

    def __init__(self, name):
        self.name = name

    def jump(self):
        print(self.name+" 跳了一下")

    def __hair_less(self):
        print(self.name+" 禿頭")


class Mix(Cat):
    def __init__(self, name):
        super(Mix, self).__init__(name)

    def jump(self):
        print("[Mix] "+self.name+" 跳了一下")

animal = Mix("噹噹")
animal.jump() #print [Mix] 噹噹 跳了一下

而這時候,就不會去呼叫父類別的函式,但也要思考一下,如果你不需要執行父類別的東西

那你繼承他是為了什麼? 這塊在物件導向設計的時候需要好好地釐清關係,以免寫出一些莫名其妙的程式

results matching ""

    No results matching ""