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的方法,外類成功獲取了私有化的成員變數。
私有僅僅是封裝的一種形式。