1. 程式人生 > >面向物件2(待補充)

面向物件2(待補充)

繼承

子類可以有父類的功能,也可以有父類的父類的功能

 

重寫

當子類不需要父類的一個方法的實現時,可以重寫一個方法,方法名必須和父類相同

子類的方法和父類的方法相同的時候,會先去自己的類中找,找到了就用自己的,找不到去父類找

 

呼叫被重寫的方法

第一種呼叫被重寫的父類的方法
父類名.方法名(self)
第二種
super().方法名()

 

 

私有方法和私有屬性並不會被繼承

如果呼叫的是繼承的父類的共有方法,可以在這個共有方法裡訪問父類的私有方法和屬性

但是如果在子類中實現了一個共有方法,那麼這個方法是不能夠呼叫繼承的父類中的私有方法和私有屬性

 

多繼承

object是所有類的基類,繼承object的類是新式類,python3預設繼承,所以都是新式類

多繼承查詢順序

c3演算法,類名.__mro__   決定呼叫一個方法時,搜尋的順序,如果在某個類中找到了方法,那麼就停止搜尋

 

多型

python崇尚鴨子型別,所謂多型,就是定義時的型別和執行時的型別不一樣,此時就稱為多型

定義時不知道調誰,執行的時候才知道調誰

class Dog(object):
    def print_self(self):
        print('大家好,我是xxx')

class Xiaobai(Dog): def print_self(self): print('hello everybody') def introduce(temp): temp.print_self() dog1=Dog() dog2=Xiaobai() introduce(dog1) introduce(dog2)