面向對象的特征——封裝和多態
一.封裝
1.封裝的定義:
封裝就是把對象的屬性和行為結合成一個獨立的相同單位,並盡可能隱蔽對象的內部細節。
2.封裝的優點:
①信息隱蔽,封裝即隱藏。
②封裝的原則在軟件上的反映是:
要求使對象以外的部分不能隨意存取對象的內部數據(屬性),從而有效的避免了外部錯誤對它的“交叉感染”,
使軟件錯誤能夠局部化,大大減少查錯和排錯的難度。
③類的封裝性帶來的優點:
隱藏類的實現細節,讓使用者只能通過事先定義好的方法來訪問數據,可以方便的加入邏輯控制,
進行數據檢查,限制對屬性的不合理操作。便於修改增強代碼的可維護性
例如:
計算三角形的面積函數
public function area($bottom, $height)
{
return $bottom*$height/2;
}
4.在PHP中通過以下三種方法來完成:
private:聲明私有的
protected:聲明需要權限的
public:聲明公共的
二.多態
對象的多態性是指在父類中定義的屬性或行為被子類繼承之後,可以具有不同的數據類型或表現出不同的行為。這使得同一個屬性或行為在父類及其各個子類中具有不同的語義。
多態這個概念,在 Java 中指的是變量可以指向的對象的類型,可是變量聲明類型的子類。對象一旦創建,它的類型是不變的,多態的是變量。
PHP5 中,變量的類型是不確定的,一個變量可以指向任何類型的數值、字符串、對象、資源等。我們無法說 PHP5 中多態的是變量。
我們只能說在 PHP5 中,多態應用在方法參數的類型提示位置。
一個類的任何子類對象都可以滿足以當前類型作為類型提示的類型要求。
所有實現這個接口的類,都可以滿足以接口類型作為類型提示的方法參數要求。
簡單的說,一個類擁有其父類、和已實現接口的身份。
1.抽象的特征和作用:
①可以使用 abstract 來修飾一個類或者方法。
②用 abstract 修飾的類表示這個類是一個抽象類, 用 abstract 修飾的方法表示這個方法是一個抽象方法。
③抽象類不能被實例化。
④抽象方法是只有方法聲明,而沒有方法的實現內容。
⑤可以使用 abstract 來修飾一個類。
⑥用 abstract 修飾的類表示這個類是一個抽象類。
⑦抽象類不能被實例化。
⑧用 abstract 修飾的類表示這個方法是一個抽象方法。
⑨抽象方法,只有方法的聲明部分,沒有方法體。
⑩抽象方法沒有 {} ,而采用 ; 結束。一個類中, 只要有一個抽象方法, 這個類必須被聲明為抽象類。抽象方法在子類中必須被重寫。
2.接口的特征和作用:
①接口(interface)是抽象方法和靜態常量定義的集合。
②接口是一種特殊的抽象類,這種抽象類中只包含抽象方法和靜態常量。
③接口中沒有其它類型的內容
例如:
interface 接口名
{
public getName();
public setName($name);
}
註意:
在接口中的抽象方法只能是 public 的,默認也是 public 權限。並且不能設置成 private 或者 protected 類型
面向對象的特征——封裝和多態