在Java的面向對象程序設計中,有三大基本特徵:封裝、繼承和多態。首先咱們先來看看封裝:安全
在Java的面對對象程序設計中,封裝(Encapsulation)是指一種將函數功能實做細節部份包裝、隱藏起來的方法。封裝能夠被認爲是一個保護屏障,防止該類的代碼和數據被外部類定義的代碼隨便訪問。若是要訪問類中的代碼和數據,必需要經過嚴格的控制。函數
使用封裝主要有如下好處:this
Java中一共有四個訪問權限控制符,用來對類和對象的數據進行封裝:spa
修飾符 | 類內部 | 同一個包 | 子類真 | 全局範圍 |
private | √ | |||
default | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
對於外部類,也可使用修飾符,不過外部類只能使用public和默認兩種修飾符。設計
public class Person { //用private修飾符修飾,外部沒法訪問 private String name; //姓名 private int age; //年齡 private String idNum; //身份證號 //獲得該類對象的姓名 public String getName() { return name; } //設置該類的對象的姓名,若是傳入空值,則不賦值 public void setName(String name) { if(name.length() == 0 || name == null){ return; } this.name = name; } //獲得年齡 public int getAge() { return age; } //設置年齡,當傳入的參數大於等於0時,纔將參數設置給該對象 public void setAge(int age) { if(age >= 0){ this.age = age; } } //獲得身份證號 public String getIdNum() { return idNum; } //設置身份證號 public void setIdNum(String idNum) { this.idNum = idNum; } }
上面的例子中咱們爲該類中的屬性增長了private修飾符,外部沒法再直接訪問和修改這些屬性,若是有須要使用,咱們則須要爲其增長getXxx和setXxx方法訪問這些事項,同時,咱們也能夠在這些方法中對這些屬性的訪問進行控制,好比姓名不能爲空,年齡不能爲負數等等。對象
這樣咱們並可見對程序的完整性和合理性進行合理的控制,也能更好的加強代碼的安全性,也使代碼可以更好的管理與維護。繼承
public class Test { public static void main(String[] args) { Person p = new Person(); p.name = "張三"; //錯誤,沒法直接訪問 p.setName("張三"); p.setAge(-5); System.out.println(p.getAge()); //輸出默認值0,儘管咱們在上一行代碼中傳入一個數值,可是咱們在setAge方法中作了控制,因此傳入的負數並無賦給p對象 } }
關於訪問控制符的使用,咱們使用應當儘可能符合下面一些原則:ci