繼承

繼承是物件導向中非常重要的一環,而繼承跟封裝又是息息相關的,如果沒有封裝就不會有繼承

以下舉個簡單的例子讓你快速了解什麼是繼承

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 hair_less(self):
        super().__hair_less()

cat = Mix("噹噹")
cat.jump() #print 噹噹 跳了一下
print(isinstance(cat, Mix)) #print True
print(isinstance(cat, Cat)) #print True
cat.hair_less() #Error 'super' object has no attribute '_Mix__hair_less'

如上述程式碼,我們有一個類別Cat 和 類別Mix而他繼承Cat

Python中的繼承就是使用Mix(Cat)這種方式來表達繼承

而需要注意的是,init method中是我們初始化這個類別,而因為Mix和Cat有繼承關係

因此初始化Mix的時候也需要初始化Cat,而我們透過super來指向他的父類別 (Cat是Mix的父類別, Mix是Cat的子類別)

而因為Mix繼承了Cat因此他的公有成員(public member)在Mix這個實體中都可以被調用,因為那是屬於他的

而hair_less這個私有方法(private method)則沒有辦法被繼承,而且Mix的實體也沒有辦法做任何的調用

results matching ""

    No results matching ""