這篇文章主要介紹PHP中的多態,有興趣的朋友參考下,希望對大家有幫助。
多態定義:只關心一個介面或基類,而不關心一個物件的具體類別。 (同一型,不同結果)
這裡兩個例子:
第一個,我們發現,基底類別定義了標準,子類別進行了自我規則的實作。這是多態的一個要求。同時,這是滿足重寫;實際上這是不同類別的不同表現;沒有嚴格滿足一個接口,或者基類編程。因為你呼叫的時候不是stu->showGrade() 而是各自自己的方法;
#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | class stu{
public function showGrade(){
echo "base class" ;
}
}
class xiaomin extends stu{
public function showGrade(){
echo "is son show 80" ;
}
}
class xiaoli extends stu{
public function showGrade(){
echo "is son show 60" ;
}
}
function doit( $obj ){
if (get_class( $obj ) != "stu" ){
$obj ->showGrade();
}
}
doit( new xiaoli());
doit( new xiaomin());
|
登入後複製
##第二個範例: dovoice 參數規定了$obj 為animal,意識就是用介面接受了實作類別物件。了向上轉型。這就符合相同類型,不同結果了,這就是多態;
實際上在Java中 會是 animal a = new dog();這樣子的;因為PHP 是若類型語言。沒有對象轉型機制。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | interface animal{
public function voice();
}
class cat implements animal{
public function voice(){
echo "miao~~~<br>" ;
}
}
class dog implements animal{
public function voice(){
echo "wang ~~~<br>" ;
}
}
function dovoice(animal $obj ){
$obj ->voice();
}
dovoice( new dog());
dovoice( new cat());
|
登入後複製
總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。
相關推薦:
php無序樹的實作技巧
php無序樹的實作技巧
php操作圖片的大小修改、加浮水印、產生驗證碼、輸出及儲存
以上是PHP中的多型的詳細內容。更多資訊請關注PHP中文網其他相關文章!