14 - 封裝、單繼承

返回主頁

📄目錄

❗❗面向對象的三大特性:封裝、繼承、多態

1 封裝

💡 封裝:指隱藏對象中一些不希望被外部所訪問到的屬性或者方法

將複雜的信息、流程給包起來,內部處理,讓使用者只需要通過簡單操作步驟就能實現

python-logo

輸出結果:

⚠️這是完全公開的,能夠被完整訪問⚠️

1.1 隱藏屬性(或稱私有權限)/隱藏方法

💡 只允許在類的內部使用,無法通過對象訪問

使用:在屬性名或者方法名前面加上兩個下劃線__

1.1.1 隱藏屬性

python-logo

輸出結果:

1.1.2 隱藏方法

python-logo

方法一:

輸出結果:

python-logo

方法二:

輸出結果:

1.2 私有屬性/方法

  1. xxx:普通屬性/方法

    1. 在類中定義的,則類可以在任意地方使用

  2. _xxx:單下劃線開頭,聲明私有屬性或方法

    1. 如果定義在類中,外部可以使用,子類也可以繼承

    2. 但是在另一個py文件通過from xxx import *導入的時候無法導入

    3. 一般是為了避免與Python關鍵字衝突而採用的方法

  3. __xxx:雙下劃線開頭,隱藏屬性

    1. 如果定義在類中,無法在外部直接訪問,子類不會繼承,要訪問只能通過間接方式

    2. 另一個py文件中通過from xxx import *導入的時候也無法導入

    3. 這種命名一般是Python中的魔術方法/屬性,都有特殊含義或者功能,自己不要輕易定義

 

1.2.1 私有屬性

python-logo

輸出結果:

1.2.2 私有方法

python-logo

輸出結果:

2 繼承

2.1 語法

💡 繼承分為單繼承和多繼承

2.2 單繼承

python-logo

輸出結果:

總結:子類可以繼承父類的屬性和方法(但如init等會除外),就算子類自己沒有,也可以使用父類的

2.3 繼承的傳遞(多重繼承)

💡 A/B/C  C類(子類)繼承B類(父類),B類(子類)繼承A類(父類)

👉🏻 C類具有A類和B類的屬性和方法

⚠️ 注意「多重繼承」與「多繼承」的區別

python-logo

輸出結果:

❗ 繼承的傳遞性就是子類擁有父類以及父類的父類中的屬性和方法

3 方法的重寫

重寫:在子類中定義與父類相同名稱的方法

3.1 覆蓋父類方法

python-logo

輸出結果:

3.2 對父類方法進行擴展

💡 繼承父類的方法時,子類也可以增加自己的功能

3.2.1 父類名.方法名(self)

python-logo

輸出結果:

3.2.2 super.()方法名()

super在Python裡面是一個特殊的類,super()是使用super類創建出來的對象,可以調用父類中的方法

💡 推薦使用這一種,是第三種的簡寫——懶人寫法

python-logo

輸出結果:

3.2.3 super(子類名, self).方法名()

python-logo

輸出結果:

4 新式類寫法

4.1 class A 經典類①

💡 有了不同於父類的東西,就成為「派生類」

4.2 class A() 經典類②

4.3 class A(object) 新式類(推薦使用)

python-logo

輸出結果:

導航連結:

目的地超連結
首頁返回主頁
Python學習Python學習
上一篇13 - 面向對象基礎
下一篇15 - 多繼承&多態