封裝是指隱藏物件的屬性和實現細節,僅對外提供公共訪問方式
這是什麼意思呢?
簡單的來說就是我將不想給別人看的資料,以及別人無需知道的內部細節, 「鎖起來」 ,我們只留下一些入口,使其與外部發生聯絡。
我們如何給我們的資料 「上鎖」 呢?
我們使用,public、private、protected 等許可權修飾符 在類的內部設定了邊界,這些不同程度的 」鎖「 決定了緊跟其後被定義的東西能夠被誰使用。
·隱藏實現細節,提供公共的訪問方式
·提高了**的復用性
·提高安全性
隱藏實現細節怎麼理解呢?
我們將一些功能封裝到類中,而客戶端的程式設計師,不需要知道類中的這個方法的邏輯原理,類程式設計師只需要給他乙個對外的介面,客戶端程式員只需要能夠呼叫這個方法即可,
例如:夏天宿舍很熱,我們(使用者)只需要操作遙控器即可使用空調,並不需要了解空調內部是如何執行的
提供公共的訪問方式又怎麼理解呢?
我們先來看一段標準案例
public
class
student
//帶參構造
public
student
(string name, int age)
//成員變數的set和get方法(與外界聯絡的橋梁)
public
void
setname
(string name)
public string getname
() public
void
setage
(int age)
public
intgetage()}
複製**
public
class
studentdemo
}複製**
我們可以看到在上面的案例中,成員變數都使用private修飾,而下面的get和set方法均使用了public修飾,其實被private修飾的屬性就是我們想要鎖起來的資料,而set、get方法就是我們開啟這把鎖的鑰匙
被private所修飾的內容是,除型別建立者和型別的內部方法之外的任何人都不能訪問的元素,所以我們這些資料就被我們通過private 「鎖」 了起來,而我們外界是可以通過建立物件來呼叫乙個類中的公共方法的,所以被public修飾的 set和get方法外界所能訪問的,而這兩個方法又可以直接訪問我們的私有成員變數,所以set和get方法就成為了私有成員與外界溝通的鑰匙。
功能被封裝成了類,通過基類與派生類之間的一些機制(組合和繼承),來提高**的復用性
ps:關於**復用問題,我會專篇講解,今天還是著重講解封裝帶來的主要好處
看完上面的**,可能大家會有一點疑惑,這些屬性、方法封裝後我都還可以看得到,這**體現了安全呢?大家來一起看一看我們下面這個改進版的案例
public
class
student
public
student
(string name, int age)
public
void
setname
(string name)
public string getname
() //在setage()方法中加入了校驗的內容
//不合法資料是不允許傳遞給成員變數的
public
void
setage
(int age)
else
}public
intgetage()}
複製**
public
class
studentdemo
}複製**
我們用private來修飾我們的成員變數不是沒有任何依據的,如果我們的成員變數修飾符改為public,這句意味著外界可以使用物件直接訪問,修改這個成員變數,這可能會造成一些重大的問題
例如:外界通過物件去給成員變數賦值,可以賦值一些非法的資料
這明顯是不合理的。所以在賦值之前應該先對資料進行判斷
studendemo是乙個測試類,測試類一般只建立物件,呼叫方法
所以這個判斷應該定義在student類中。需要使用邏輯語句
邏輯語句應該定義在方法中。所以在student類中提供乙個方法來對資料進行校驗
但是如果偏偏不呼叫方法來賦值,還是直接賦值,這樣我們的方法就沒有起作用
所以我們必須強制要求使用我的方法,而不能直接呼叫成員變數
這也正是我們使用private修飾成員變數的原因!
如果能幫到你的話,那就來關注我吧!
在這裡的我們素不相識,卻都在為了自己的夢而努力 ❤
零基礎小白 帶你從頭到尾的細緻了解DHCP協議
dhcp基本背景 1.1.前言 dhcp協議 2.1.dhcp的介紹 dhcp dynamic host configure protocol,動態主機配置協議 從bootp bootstrap protocol 協議發展而來 udp封裝,伺服器 67,客戶端 68 動態分配tcp ip資訊 ip位...
Java之類的封裝
將物件的狀態資訊隱藏在物件內部,不允許外部程式直接訪問物件內部資訊,而是通過該類所提供的方法來實現對內部資訊的操作和訪問。封裝是通過設定訪問控制符實現的,他們的訪問控制如下 訪問許可權 類 包 子類 全域性範圍 public protect default private 訪問控制符可用於修飾的成員...
Java 封裝的詳解
我們日常使用的電腦主機,把cpu 記憶體 主機板等等都封裝到機箱裡面去。假如沒有機箱的話的出現什麼問題,主機 主機板全部都散落在一處,然後開機沒有開機按鈕,那麼需要我們直接操作接跳線才能把電腦開啟。這樣子的話假如操作不慎的話,會讓機器損壞危險,那麼假如用機箱封裝起來的話,那麼就不需要這樣子做了。體現...