1. 程式人生 > 實用技巧 >面向物件-上之面向物件的特徵一:封裝性

面向物件-上之面向物件的特徵一:封裝性

面向物件的特徵一:封裝與隱藏
1.為什麼要引入封裝性?
我們程式設計追求“高內聚,低耦合”。
高內聚 :類的內部資料操作細節自己完成,不允許外部干涉;
低耦合 :僅對外暴露少量的方法用於使用。

隱藏物件內部的複雜性,只對外公開簡單的介面。便於外界呼叫,從而提高系統的可擴充套件性、可維護性。通俗的說,把該隱藏的隱藏起來,該暴露的暴露出來。這就是封裝性的設計思想。

2.問題引入:
當我們建立一個類的物件以後,我們可以通過"物件.屬性"的方式,對物件的屬性進行賦值。這裡,賦值操作要受到屬性的資料型別和儲存範圍的制約。除此之外,沒其他制約條件。但是,在實際問題中,我們往往需要給屬性賦值加入額外的限制條件。這個條件就不能在屬性宣告時體現,我們只能通過方法進行限制條件的新增。(比如:setLegs()同時,我們需要避免使用者再使用"物件.屬性"的方式對屬性進行賦值。則需要將屬性宣告為私有的(private).

-->此時,針對於屬性就體現了封裝性。
3.封裝性思想具體的程式碼體現:
體現一:將類的屬性xxx私化(private),同時,提供公共的(public)方法來獲取(getXxx)和設定(setXxx)此屬性的值

private double radius;
public void setRadius(double radius){
    this.radius = radius;
}
public double getRadius(){
    return radius;
}
體現二:不對外暴露的私有的方法
體現三:單例模式(將構造器私有化)
體現四:如果不希望類在包外被呼叫,可以將類設定為預設的。

4.Java規定的四種許可權修飾符
  4.1 許可權從小到大順序為:private < 預設 < protected < public
  4.2 具體的修飾範圍:

  

  4.3 許可權修飾符可用來修飾的結構說明:
  4種許可權都可以用來修飾類的內部結構:屬性、方法、構造器、內部類
  修飾類的話,只能使用:預設、public