Python-24章 面向對象-封裝

面向對象的三大特徵

封裝,繼承,多態

封裝

1.對屬行的封裝

把多個信息保存在一個對象裏面

2.對功能的封裝

類執行的動作函數

3.模塊

把很多的類封裝到一個py文件裏

4.包

把很多的py文件放在一個文件夾裏

繼承

子類可以可以自動擁有父類中除了私有屬性以外的其他內容.

子類可以自動擁有父類中除了私有屬性外的其他所有內容. 說白了, 兒子可以隨便用爹的東西. 但是朋友們, 一定要認清楚一個事情. 必須先有爹, 後有兒子. 順序不能亂, 在python中實現繼承非常簡單. 在聲明類的時候, 在類名後面添加一個小括號,就可以完成繼承關係. 那麼什麼情況可以使用繼承呢? 單純的從代碼層面上來看. 兩個類具有相同的功能或者特徵的時候. 可以採用繼承的形式. 提取一個父類, 這個父類中編寫着兩個類相同的部分. 然後兩個類分別取繼承這個類就可以了. 這樣寫的好處是我們可以避免寫很多重複的功能和代碼. 如果從語義中去分析的話. 會簡單很多. 如
果語境中出現了x是一種y. 這時, y是一種泛化的概念. x比y更加具體. 那這時x就是y的類. 比如. 貓是一種動物. 貓繼承動物. 動物能動. 貓也能動. 這時貓在創建的時候就有了動物的"動"這個屬性. 再比如, 白骨精是一個妖怪. 妖怪天生就有意個比較不好的功能叫"吃人", 白骨精一出生就知道如何"吃人". 此時 白骨精繼承妖精. 話不多說.上代碼.

#繼承
class foo():
    def getmoney(self):
        print("拿錢")

class bar(foo):
    pass
b = bar()
b.getmoney()
# 輸出:拿錢
class animal():
  def dong(self):
      print("動物會動")


class cat(animal):
  def dong(self):  #類中寫了和父類一模一樣的方法,這個叫方法的覆蓋
      print("貓是動物,貓會動")
  def catmove(self):
      print("貓會動,貓會抓老鼠")


c = cat()  # 創建的是貓
c.dong()  # 類中的方法查詢順序,先找自己再找父類
#輸出:貓是動物,貓會動

Python支持多繼承


class foo1:
    def getmoney(self):
        print("給我一千萬")
class foo2:
    def play(self):
        print("帶我去玩一天")
class bar(foo1,foo2): #就近原則,離當前類最近的,先找foo1的,如果有就不會去找foo2了
    pass
b =bar()
b.getmoney()  #輸出:給我一千萬
b.play()  #輸出:帶我去玩一天
多態性

同一個對象,多種形態
Python支持的是鴨子類型

#Python支持的是鴨子類型
def func(yazi):
    yazi.gagajiao()
#函數寫的是鴨子,但是要的是能嘎嘎叫的,不管傳進來什麼只要能嘎嘎叫就行.會嘎嘎叫的就是好鴨子
#例如,老師經常會說:學習好的就是好學生

優點:超強的可擴展性

發佈了130 篇原創文章 · 獲贊 11 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章