物件導向特徵之封裝

2021-09-10 22:24:46 字數 2437 閱讀 9065

(1) 關於封裝

為什麼要封裝?

為了保護敏感/隱私屬性資料,讓外界訪問當前物件中的屬性資料時,可以按照我們指定的條件進行訪問,否則不允許訪問,提高屬性資料的安全性。

怎麼封裝?實現封裝的步驟

1. 將當前型別中所有屬性私有化。

2. 給每個屬性提供訪問屬性資料的set/get方法。

3. 給敏感屬性的訪問方法中,新增訪問限制條件。

什麼地方使用封裝?

任何出現在型別性中的屬性,都要使用封裝。【理論上】

什麼是封裝?

對屬性資料的安全保護。【官方】

零散資料的統一整理——封裝

多種相似方法的統一整理——封裝

資料的保護——封裝

案例如下:

'''

封裝的步驟:

1. 將全部屬性私有化【使用兩個下劃線開頭,描述該屬性是私有的,外界不能直接訪問】

2. 給每個屬性,提供set/get訪問方法

3. 在訪問方法中,就可以新增訪問限制,保護資料安全

'''class person:

def __init__(self,name,age):

self.__name = name

self.__age = age

def set_name(self,name):

"""給屬性設定值的方法"""

self.__name = name

def get_name(self):

"""獲取屬性值的方法"""

return self.__name

def set_age(self):

"""給屬性設定值的方法"""

#加上判斷屬性引數

if 20 <= age <=40:

self.__age =age

else:

print("輸入的年齡不合法...")

def get_age(self):

"""獲取屬性值的方法"""

return self.__age

#建立使用者物件

p = person("湯姆",21)

print(p.get_name(), p.get_age())

#修改物件的屬性資料

p.set_name("小新")

p.set_age(100)

print(p.get_name(), p.get_age())

例2

"""

關於封裝的屬性訪問

"""class person:

'''定義人的型別'''

def __init__(self,name,_age,__money):

'''定義人的屬性'''

self.name = name

self._age = _age

self.__money = __money

def set_money(self,money):

'''給屬性設定值的方法'''

self.__money = money

def get_money(self):

'''獲得屬性值的方法'''

return self.__money

#建立物件的同時並初始化資料

p = person("小新",25,100)

#此處name是為封裝屬性資料,_age為約定資料可以訪問列印,而__money為封裝函式不可直接訪問列印

print(p.name,p._age)

#1.直接 — 操作物件的屬性 — 對於物件的屬性可破壞性訪問

p.name = "大熊"

print(p.name)

#2.約定 - 約定如果乙個屬性的名稱前有乙個下劃線開頭,表示它為私有資料,不能直接操作,如:

p._age = 50

#此處_age即為私有資料

print(p._age)

#系統會提示錯誤

# access to a protected member _age of class

# 警告:這裡訪問了型別中乙個收到保護的成員屬性_age

#3. 私有化 - 型別中的屬性資料,名稱前有兩個下劃線,則屬性變為私有屬性,外界不能直接訪問

#提供訪問該私有屬性的方法為:函式set/get,前者為設定資料後者為獲取資料

print(p.get_money())

p.set_money = 1000

#此時可以訪問並更改__money屬性資料,但系統有報警

print(p.get__money())

# unresolved attribute reference __money for class person

# 在person型別中,查詢不到屬性__money

物件導向三大特徵之封裝

上半句 下半句。三流的書籍和部落格只會告訴你上半句,因為它們的作者自己也不知道下半句,而讓我們接近真理,走的更遠的是下半句。並且下半句往往非常簡單。上半句就是一些半吊子挖出的天坑,就算下半句非常簡單。因為上半句的誤導產生的阻礙,讓無數人很多年也接觸不到講述真理的下半句。時刻警醒 我們要學習的是講述真...

物件導向三大特徵之封裝

將屬性封裝起來,不讓外部直接訪問 提供getset方法訪問 package com.lv.am 資料的封裝 資料的實體類物件 除了這個商品的物件 我們還有什麼現實生活中也是這樣來定義乙個實體類 public class goods public void setname string name pu...

0808 Java物件導向特徵之封裝

一 物件導向的定義 物件 用來描述客觀事物的乙個實體,由一組屬性和方法構成 屬性 物件具有的各種特徵,每個物件的每個屬性都擁有特定值 方法 物件執行的操作 二 類圖 用於分析和設計類 三 封裝 private 將類的某些資訊隱藏在類內部,不允許外部程式直接訪問,而是通過該類提供的方法來實現對隱藏資訊...