標籤:不能 對象屬性 .com info 完成 定義 code 附加 alt
廣義的封裝:執行個體化一個對象,給對象空間封裝一些屬性。狹義的封裝:私人制私人成員:私人靜態欄位,私人方法,私人對象屬性對於私人靜態欄位,私人方法,私人對象屬性,類的外部不能訪問.----# 執行個體化對象不能訪問私人靜態欄位,私人方法,私人對象屬性----# 類名不能訪問私人靜態欄位,私人方法,私人對象屬性對於私人靜態欄位,私人方法,私人對象屬性,類的內部可以訪問.對於私人靜態欄位,私人方法,私人對象屬性來說,只能在本類中內部訪問,類的外部,衍生類別均不可訪問.python中用雙底線開頭的方式將屬性隱藏起來(設定成私人的)----#其實這僅僅是一種變形操作----#類中所有底線開頭的名稱如__x都會自動變形成:_類名__x的形式----這種自動變形的特點:--------1.類中定義的__x只能在內部使用,如self.__x,引用的就是變形得到結果。--------2.這種變形其實正是針對外部的變形,在外部是無法通過__x這個名字訪問到的--------3.在子類定義的時候__x不會覆蓋在父類定義的__x,因為子類中變形成:_子類名__x,而父類中變成:_父類名__x 即雙底線開頭的屬性在繼承給子類時,子類是無法覆蓋的。 這種變形需要注意的問題:------------1.這種機制也並沒有真正意義上限制我們從外部直接存取屬性,知道了類名和屬性名稱就可以拼出名字:_類名__屬性名稱------------2.變形的過程只在類的定義是發生一次,在定義後的複製操作,不會變形。------------3.在繼承中,父親如果不讓子類覆蓋自己的方法,可以將方法定義為私人的。封裝不是單純意義上的隱藏1.封裝資料----將資料隱藏起來不是目的。隱藏起來然後對外提供操作該資料的介面,然後我們可以在介面附加上對該資料操作的限制 以此完成對資料屬性操作的嚴格性。2.封裝方法----目睹是隔離複雜度。 提示:在程式設計語言裡面,對外提供的介面(介面可以理解為一個入口),可以是函數,稱為介面函數,這與介面的概念 不一樣,介面代表一組介面函數的集合。
Python物件導向之封裝