標籤:const 完整性 部分 屬性 tom 傳回值 修飾符 images 子類
物件導向的特徵
1 封裝
2 繼承
3 多態
封裝
封裝就是把對象的屬性和行為結合成一個獨立的相同單位,並儘可能隱蔽對象的內部細節
優點:資訊隱蔽,封裝即隱藏。
封裝的原則在軟體上的反映是:要求使對象以外的部分不能隨意存取對象的內部資料(屬性),從而有效避免了外部錯誤對它的“交叉感染”,使軟體錯誤能夠局部化,大大減少查錯和排錯的難度。
類的封裝性帶來的優點:隱藏類的實現細節,讓使用者只能通過事先定義好的方法來訪問資料,可以方便的加入邏輯控制,進行資料檢查,限制對屬性的不合理操作。便於修改增強代碼的可維護性
//計算三角形的面積函數
public function area($bottom, $height){
return $bottom*$height/2;
}
如上的面積函數,我們只要把對應的參數底邊長度和高度傳遞到該函數中,就可以得到計算的面積結果,至於具體的實現步驟和過程可以忽略,而由實現該面積計算功能的函數去處理。
PHP 中通過將資料封裝、聲明為私人的(private),再提供一個或多個公開的( public)方法實現對該屬性的操作,以實現下述目的:
1.隱藏一個類的實現細節;
2.防止對封裝資料的未經授權的訪問。使用者只能通過事先定製好的方法來訪問資料,可以方便地加入控制邏輯,限制對屬性的不合理操作;
3.有利於保證資料的完整性;
4.便於修改,增強代碼的可維護性;
繼承
什麼是繼承?
1.繼承是物件導向最重要的特點之一,就是可以實現對類的複用。
2.通過“繼承”一個現有的類,可以使用已經定義的類中的方法和屬性。
3.繼承而產生的類叫做子類。
4.被繼承的類,叫做父類,也被成為超類。
5.PHP 是單繼承的,一個類只可以繼承一個父類,但一個父類卻可以被多個子類所繼承。
6.從子類的角度看,它“ 繼承( inherit , extends) ”自父類;而從父類的角度看,它“派生(derive)”
子類。它們指的都是同一個動作,只是角度不同而已。
7.子類不能繼承父類的私人屬性和私人方法。
簡單例子:動物------>狗
class Animal{
public $name=‘我是動物‘;
public function getName(){
return $this->name;
}
}
class Dog extends Animal{
public function __construct(){
$this->name=‘這個是狗狗‘;
}
}
存取控制
在 PHP5 中,可以在類的屬性和方法前面加上一個修飾符( modifier),來對類進行一些訪問上的控制
重寫
如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋( override),也稱為方法的重寫。
當對父類的方法進行重寫時,子類中的方法必須和父類中對應的方法具有相同的方法名稱, 在 PHP5 中不限制輸入參數類型、參數數量和傳回值類型。(這點和 JAVA 不同)
子類中的覆蓋方法不能使用比父類中被覆蓋方法更嚴格的存取權限。
this
PHP5 中為解決變數的命名衝突和不確定性問題,引入關鍵字“$this”代表其所在當前對象。
$this 在建構函式中指該建構函式所建立的新對象
在類中使用當前對象的屬性和方法,必須使用$this->取值。
方法內的局部變數,不屬於對象,不使用$this 關鍵字取值。
parent
PHP5 中使用 parent::來引用父類的方法。
parent:: 可用於調用父類中定義的成員方法。
parent::的追溯不僅於直接父類。
PHP物件導向 ——封裝和繼承