1. 程式人生 > >面向物件,繼承,多型,封裝1

面向物件,繼承,多型,封裝1

---恢復內容開始---

繼承:

      一個類可以被多個類繼承,一個類也可以有多個父類,父類裡面的方法屬性子類都可以用 

1.單繼承

    

class Alimone:
#父類
def __init__(self, name, agree, hp, sex): self.name = name self.agree = agree self.hp = hp self.sex = sex def cat(self): #父類方法
print('你好') self.hp+=100 class Dog(Alimone): #繼承父類 def __init__(self, name, agree, hp, sex, pi): 使用父類屬性的話,子類屬性裡面頁要新增父類的屬性 Alimone.__init__(self, name, agree, hp, sex) #使用父類屬性, self.pi = pi def cat(self): #子類方法 print('大你') a = Dog('旺財', 2, 300, '', '泰迪') #例項化子類
print(a.name) 可以呼叫自己的屬性 super(Dog,a).cat() 如果要呼叫父類的方法,需要使用super函式,裡面填子類,和子類物件 print(a.hp) 也可以呼叫父類的屬性

 

2多繼承

class A: 父類
    def func(self):
        print('a')


class B:
    def func(self):
        print('b')


class C(A, B):  繼承兩個類
    pass


c = C()
c.func()  呼叫方法是,先檢視自己本身有沒有,如果自己本身有這個方法,那麼就呼叫自己的方法,如果自己本身沒有,就找繼承父類的,先找A的,A類有就呼叫A類的,如果沒有在找B類的


"""
多繼承尋找名字的順序:新式類,廣度優先,經典類,深度優先
新式類中有個一個。mor的方法,檢視廣度優先的繼承順序
prthon3中,有個一個super方法根據廣度優先的順序,查詢上一類
"""
 

 

3.多型

python 天生就是多型的,
因為他有鴨子型別
鴨子型別:鴨子型別不是根據父類來約束,而是自己約束自己

4。封裝

封裝:廣義面向物件就是保護物件,讓物件不被外部呼叫

所以得私有方法都是加雙下劃線
私有屬性
私有方法
類中的靜態屬性

所有的私有方法都不能在外部呼叫

class Pereson:
def __init__(self, name, password):
self.name = name
self.__password = password # 把屬性私有化,私有屬性
def get(self):
return self.__password # 私有屬只能在內部使用,只要在類的內部使用私有屬性,就會自動的帶上下劃線類名


a = Pereson('小明', 1233)
print(a.name) # 直接呼叫不到私有化的屬性