1) 私有屬性和方法:
私有屬性,只能在類的內部方法中訪問。
如何私有化:在屬性名或方法名的前面,添加‘_ _’符號
如果要訪問私有的方法和屬性:需要提供一個非私有(公共函數)的方法來訪問或修改屬性值。
2) 繼承:
原則:子類從父類中繼承所有屬性和方法, 在訪問父類的方法:
1、super().方法名( )
2、在父類的方法中,可以通過self來訪問子類中的屬性 【前提: 實例化子類對象】
2、在子類的構造函數中,調用父類的構造函數的情況:
2.1) 如果子類中沒有__init__函數,在創建子類對象,會默認調用父類的__init__函數。
2.2) 如果子類中有__init__函數,在創建子類對象,只會調用子類中的__init__函數。
2.2.1) super(子類名, self).__init__(參數)調用父類的__init__函數,如果有多個父類,默認調用第一個父類的__init__函數
2.2.2)父類名.__init__(self, 參數)強制調用指定父類的__init__函數
爲什麼調用父類__init__函數?
只有一個目的: 初始化綁定 父類中的屬性(父類中有多個屬性),爲了在子類中能夠直接訪問
3) 多態性
同屬一類的多個子類中(繼承),重寫了父類的函數/方法(重寫)在定義某一特定函數時,只聲明父類的對象,在使用時可以傳入子類的對象,在特定函數中,會自動調用子類中重寫父類的函數。
Class Printer:
Def print_txt(Printer)
class DelPrinter(Printer):
def print_txt(self, txt): 重寫父類的函數
class HPPrinter(Printer):
def print_txt(self, txt):重寫父類的函數
def print_(prnter, txt) #特定功能的函數
Printer.print_txt(#) 會自動調用子類中的重寫父類的print_txt()函數
說明:面向對象編程中,對象有三大特性:封裝性,繼承,多態性