面向物件2(待補充)
阿新 • • 發佈:2018-12-10
繼承
子類可以有父類的功能,也可以有父類的父類的功能
重寫
當子類不需要父類的一個方法的實現時,可以重寫一個方法,方法名必須和父類相同
子類的方法和父類的方法相同的時候,會先去自己的類中找,找到了就用自己的,找不到去父類找
呼叫被重寫的方法
第一種呼叫被重寫的父類的方法
父類名.方法名(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)