物件導向的三大特性之一 封裝

2021-10-10 10:05:56 字數 1835 閱讀 3410

封裝就是使用特殊的語法,對成員屬性和成員方法進行包裝,達到保護和隱藏的目的

但是一定注意,不能把成員全部封裝死,就失去意義了

被封裝的成員主要是供類的內部使用

被特殊語法封裝的成員,會有不同的訪問的許可權

封裝的級別

成員 ==

> 公有的

_成員 ==

> 受保護的 (約定俗成,而python沒有具體實現)

__成員 ==

> 私有的

公有的 public 受保護的 protected 私有的 private

在類的內部 ok

okok

在類的外部 ok

no(python可以) no

了解即可:

在python中給成員進行私有化,其實就是改了成員的名字

私有化 ==

> _類名__成員

class

person()

: # 成員屬性

name = none

_*** = none # 在成員前面 加乙個 _ 受保護的成員

__age = none # 在成員前面 加兩個 __ 私有的成員

# 初始化方法

def __init__

(self,a,b,c)

: self.name = a

self._*** = b

self.__age = c

def _say

(self)

:print

('hello,world!'

) def __sing

(self)

:print

('lets together'

) def func

(self)

: # 在類的內部可以操作任意成員

print

(self.__age)

def __del__

(self)

:print

('its over'

)jd =

person

('jd'

,'girl',23

,)#屬性呼叫:

# print

(jd._***) # 輸出:girl

# 在類的外部不能操作 受保護的成員 (但是python中可以)

# print

(jd.__age) # 輸出報錯:attributeerror:

'person' object has no attribute '__age'

# 在類的外部不能操作 私有成員屬性

# print

(jd._person__age) # 輸出:23

# 可以使用特殊的語法獲取私有成員

#函式呼叫:

# jd.

_say

() # 輸出:hello,world!

(_和__方法和呼叫屬性方法是一致的)

# jd.

__sing

() # 輸出報錯:attributeerror:

'person' object has no attribute '__sing'

jd.func

() # 輸出:可以通過內部呼叫來呼叫私有成員屬性

# print

(jd.__dict__) #獲取當前物件的所有屬性,如果將__init__登出,則返回乙個空集合

# print

(person.__dict__)#可以獲取當前類所有成員資訊 輸出:

物件導向三大特徵之一 封裝

封裝 將類的某些資訊隱藏在類內部,不允許外部程式直接訪問,而是通過該類提供的方法來實現對隱藏資訊的操作和訪問 封裝的步驟 1 屬性私有化 2 提供公共的設定器和訪問器 3 在設定器和訪問器中新增業務校驗邏輯 private 私有的,對外不可見 private string name private ...

C 三大特性之一 封裝

物件 存在屬性和行為 封裝 1.將屬性和行為作為乙個整體,表現生活中的事物 2.將屬性和行為加許可權控制 private 語法 class 類名 封裝意義一 將屬性和行為寫在一起表示事物 include define use math defines includeusing namespace s...

物件導向學習(三) 物件導向的三大特徵之一封裝性

封裝 繼承 多型 1.方法就是一種封裝 2.關鍵字private也是一種封裝 封裝就是將一些細節資訊隱藏起來,對於外界不可見 package cn.itcast.demo.object oriented.demo02 public class demo01method int max getmax ...