1. 程式人生 > >java的封裝,private關鍵字

java的封裝,private關鍵字

一、封裝表現

1、方法就是一個封裝

2、類其實也是一個封裝體。

二、封裝好處

1、提高程式碼複用性

2、隱藏實現細節,並對外提供呼叫方式,這也是封裝概念。

3、提高了安全性

三、封裝是如何提高安全性的

封裝提高安全性的定義:不讓外邊的類直接呼叫我的成員變數。比如一個Person類有兩個成員變數age,和name。

注意這種寫法,外類(同一個包裡的類)可以對年齡,姓名賦值。一旦外類直接賦值,就會出現安全問題。如:

 

外類給年齡賦了-200的初值,不符合常理,這就是安全問題。

四、private關鍵字處理安全問題。

1、private關鍵字:私有   屬於成員變數修飾符,只能成員變數使用,區域性變數使用就會報錯。不能修飾區域性變數。被private修飾的成員變數只能在自己的本類中使用。因此private又被稱為許可權修飾。

2、private關鍵字修飾出現的問題。

如果用private修飾了,外類無法直接訪問,那當如何處理,外界一定要訪問,但是訪問要進行限制性訪問,比如對賦值進行檢查一下,是否符合人類規範?等等。

3、處理方法。

這就引入了著名的set和get方法。set和get方法就來源於此。  

set方法用來對賦的值進行過濾,並將過濾後的值傳給成員變數。

4、又出現一個新問題。

現在外類可以通過set方法進行賦值了,例如

如上圖通過p.setAge(50)將年齡50賦值給了Person類的成員變數。

上圖最後一行,現在要列印這個值,但是成員變數是有private修飾的,用p.age是無法獲取成員變數的值,因為經過private修飾的值,只能由本類來呼叫。

處理方法:在本類中增加一個get方法。外類通過get方法來獲取經過private修飾的值。

 

在本類中get方法就兩行。用於返回成員變數。

外類中獲取成員變數的方法是:

 

外類也通過get方法獲取裡面的值。

總結:

     由於對類進行封裝,為了實現封裝的安全性,防止外類亂賦值。就要對類的成員變數進行私有化。私有化又產生了,外類無法訪問的問題,因此又引出了set方法,set方法對外類的賦值進行了過濾,把不符合要求的值擋在了外面。私有化還出現了外類無法獲取成員變數的值,因此又引入了get方法,get方法的用處是:提供了外類獲取本類成員變數的值得介面或者方法。通過get的方法,外類成功獲取了私有化的成員變數。

私有僅僅是封裝的一種形式。