[Java入門筆記] 物件導向三大特徵之:封裝,java三大

來源:互聯網
上載者:User

[Java入門筆記] 物件導向三大特徵之:封裝,java三大
瞭解封裝什麼是封裝?

在Java的物件導向程式設計中,有三大基本特徵:封裝、繼承和多態。首先我們先來看看封裝:

在Java的面對對象程式設計中,封裝(Encapsulation)是指一種將函數功能實作細節部份封裝、隱藏起來的方法。封裝可以被認為是一個保護屏障,防止該類的代碼和資料被外部類定義的代碼隨便訪問。如果要訪問類中的代碼和資料,必須要通過嚴格的控制。

為什麼要使用封裝?

使用封裝主要有以下好處:

  • 能夠隱藏該類中一些功能的實現細節。讓調用者通過事先實現好的方法訪問類的功能和資料,同時也限制對類中資料的不合理訪問。
  • 對資料進行檢查,有利於保護對象資訊的完整和合理性。
  • 便於對代碼的修改和維護,提高代碼的可維護性。
如何使用封裝?存取權限控制符

Java中一共有四個存取權限控制符,用來對類和對象的資料進行封裝:

修飾符 類內部 同一個包 子類真 全域範圍
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對象    }}

 

使用原則

關於存取控制符的使用,我們使用應當盡量符合下面一些原則:

  • 類的大部分成員變數,都應該使用private修飾符,只有一些static、全域變數的Field,才考慮使用public修飾符。
  • 如果某個類主要用作其他類的父類,類中的大部分方法和屬性希望被子類重寫和使用,而又不想被外部直接調用,則應當使用protected修飾符。
  • 希望被暴露出來直接被外部使用的方法,應當使用public修飾符。
  • 一個方法的功能只有在類的內部被調用時,應當使用private修飾符。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.