廣義的封裝:實例化一個對象,給對象空間封裝一些屬性。 狹義的封裝:私有制 私有成員:私有靜態字段,私有方法,私有對象屬性 對於私有靜態字段,私有方法,私有對象屬性,類的外部不能訪問. ----# 實例化對象不能訪問私有靜態字段,私有方法,私有對象屬性 ----# 類名不能訪問私有靜態字段,私有方法,私有對象屬性 對於私有靜態字段,私有方法,私有對象屬性,類的內部能夠訪問. 對於私有靜態字段,私有方法,私有對象屬性來講,只能在本類中內部訪問,類的外部,派生類均不可訪問. python中用雙下劃線開頭的方式將屬性隱藏起來(設置成私有的) ----#其實這僅僅是一種變形操做 ----#類中全部下劃線開頭的名稱如__x都會自動變造成:_類名__x的形式 ----這種自動變形的特色: --------1.類中定義的__x只能在內部使用,如self.__x,引用的就是變形獲得結果。 --------2.這種變形其實正是針對外部的變形,在外部是沒法經過__x這個名字訪問到的 --------3.在子類定義的時候__x不會覆蓋在父類定義的__x,由於子類中變造成:_子類名__x,而父類中變成:_父類名__x 即雙下劃線開頭的屬性在繼承給子類時,子類是沒法覆蓋的。 這種變形須要注意的問題: ------------1.這種機制也並無真正意義上限制咱們從外部直接訪問屬性,知道了類名和屬性名就能夠拼出名字:_類名__屬性名 ------------2.變形的過程只在類的定義是發生一次,在定義後的複製操做,不會變形。 ------------3.在繼承中,父親若是不讓子類覆蓋本身的方法,能夠將方法定義爲私有的。 封裝不是單純意義上的隱藏 1.封裝數據 ----將數據隱藏起來不是目的。隱藏起來而後對外提供操做該數據的接口,而後咱們能夠在接口附加上對該數據操做的限制 以此完成對數據屬性操做的嚴格性。 2.封裝方法 ----目擊是隔離複雜度。 提示:在編程語言裏面,對外提供的接口(接口能夠理解爲一個入口),能夠是函數,稱爲接口函數,這與接口的概念 不同,接口表明一組接口函數的集合。