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

面向物件封裝、繼承、多型

  • 多型(Polymorphism):意味著可以對不同類的物件使用相同的操作。

  • 封裝(Encapsulation): 即對外部世界隱藏物件的工作細節。

  • 繼承(Inheritance): 以通用的類為基礎建立專門的類物件。

1.封裝 顧名思義就是將內容封裝到某個地方,以後再去呼叫被封裝在某處的內容。 對於面向物件的封裝來說,其實就是使用構造方法將內容封裝到 物件 中,然後通過物件直接或者self間接獲取被封裝的內容。

封裝 是面向物件程式設計的一大特點 面向物件程式設計的第一步 —— 將 屬性和方法封裝到一個抽象的類中 外界使用類建立物件,然後讓物件呼叫方法物件方法的細節都被封裝在類的內部 提示 1.在物件的方法內部,是可以 直接訪問物件的屬性的 2.同一個類建立的多個物件 之間,屬性互不干擾!

私有屬性和私有方法: 1.在實際開發中,物件 的 某些屬性或方法 可能只希望在物件的內部被使用,而不希 望在外部被訪問到 2.私有屬性就是物件不希望公開的屬性 3.私有方法就是物件不希望公開的方法

定義方式 1.在 定義屬性或方法時,在屬性名或者方法名前增加兩個下劃線,定義的就是 私有 屬性或方法 2.偽私有屬性和私有方法: 在名稱前面加上 _類名 => _類名__名稱

2.繼承 繼承,面向物件中的繼承和現實生活中的繼承相同,即:子可以繼承父的內容。

注意: 關於多繼承

  • 在Python中,如果父類和子類都重新定義了構造方法init( ),在進行子類例項化的時候,子類的構造方法不會自動呼叫父類的構造方法,必須在子類中顯示呼叫。
  • Python的類可以繼承多個類,Java和C#中則只能繼承一個類
  • Python的類如果繼承了多個類,那麼其尋找方法的方式有兩種,分別是:深度優先和廣度優先
  • 當類是經典類時,多繼承情況下,會按照深度優先方式查詢,當類是新式類時,多繼承情況下,會按照廣度優先方式查詢

經典類和新式類,從字面上可以看出一個老一個新,新的必然包含了跟多的功能,也是之後推薦的寫法,從寫法上區分的話,如果 當前類或者父類繼承了object類,那麼該類便是新式類,否則便是經典類。

3.多型 多型意味著支援多種形態,就算你不知道變數所引用的物件型別是什麼,還是能對它進行操作,而它也會根據物件型別的不同而表現出不同的行為。