[Java入門筆記] 面向對象三大特徵之:封裝

瞭解封裝

什麼是封裝?

在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

  • 類的大部分紅員變量,都應該使用private修飾符,只有一些static、全局變量的Field,才考慮使用public修飾符。
  • 若是某個類主要用做其餘類的父類,類中的大部分方法和屬性但願被子類重寫和使用,而又不想被外部直接調用,則應當使用protected修飾符。
  • 但願被暴露出來直接被外部使用的方法,應當使用public修飾符。
  • 一個方法的功能只有在類的內部被調用時,應當使用private修飾符。
相關文章
相關標籤/搜索