1. 程式人生 > 其它 >第四章 面向物件(上)4-面向物件的特徵一:封裝性

第四章 面向物件(上)4-面向物件的特徵一:封裝性

面向物件的特徵一:封裝與隱藏

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

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

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

3.封裝性思想具體的程式碼體現:
體現一:將類的屬性xxx私有化(private),同時,提供公共的(public)方法來獲取(getxxx)和設定(setxxx)此屬性的值。
【程式碼】

private double radius;
public void setRadius(doule radius){
  this.radius = radius;
}

public double getRadius(){
  return radius;
}

體現二:不對外暴露的私有的方法。
體現三:單例模式(將構造器私有化)
體現四:如果不希望類在包外被呼叫,可以將類設定為預設的。

4.Java規定的四種許可權修飾符:

4.1 許可權從下到大的順序:private 、預設(default)、protected 、public
4.2 具體的修飾範圍:

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