1. 程式人生 > >php 多肽例項

php 多肽例項

多型定義:只關心一個介面或者基類,而不關心一個物件的具體類。(同一型別,不同結果)

這裡兩個例子:

第一個,我們發現,基類定義了標準,子類進行了自我規則的實現。這是多型的一個要求。同時,這是滿足重寫;實際上這是不同類的不同表現;沒有嚴格滿足一個介面,或者基類程式設計。因為你呼叫的時候不是 stu->showGrade() 而是各自自己的方法;

 

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 是若型別語言。沒有物件轉型機制。

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());

轉自 https://www.jb51.net/article/68451.htm