首頁 >後端開發 >php教程 >php實作物件導向多態性方法的案例

php實作物件導向多態性方法的案例

黄舟
黄舟原創
2017-09-28 09:02:511375瀏覽

這篇文章主要介紹了PHP物件導向多態性實現方法,簡單說明了物件導向多態性的原理並結合具體實例給出了php實現多態性的相關操作技巧,需要的朋友可以參考下

本文實例講述了PHP物件導向多型實作方法。分享給大家供大家參考,具體如下:

多態:父類別引用指向子類別物件(物件導向中能夠根據使用類別的上下文(使用輸入不同的類別呼叫不同類別的方法)來重新定義或改變類別的性質和行為。

物件導向:把資料(屬性),操作資料的方法,邏輯,形成一個類,把類別抽像出來形成對象,透過物件使用類別;


#
<?php
class work{
  function polymorphic($obj){
    //检查是否引用类型(obj是否继承animal类)
    if($obj instanceof animal){
      $obj -> fun();
    }
    else{
      echo "no function";
    }
  }
  //如果需要指定类 (指定cat类,包含cat子类)
  function bose(cat $obj){
    $obj->fun();
  }
}
//抽象类
 abstract class animal{
  abstract function fun();
}
//cat猫类
class cat extends animal{
  function fun(){
    echo "cat say miaomiao...";
  }
}
//dog狗类
class dog extends animal{
  function fun(){
    echo "dog say wangwang...";
  }
}
class mouse extends cat{
}
//先new一个work类
$new_work = new work();
//然后通过new_work对象 调用 polymorphic 方法,传入不同的类实现 父类引用指向子类对象;接口引用指向实现接口的类对象(多态)。
$new_work->polymorphic(new cat());
echo &#39;<br/>&#39;;
$new_work->polymorphic(new dog());
echo &#39;<br/>&#39;;
//指定类方式仿java
$new_work->bose(new cat());
echo &#39;<br/>&#39;;
//如果传输其他类,或者未继承cat类则会报错
//$new_work->bose(new dog());
echo &#39;<br />&#39;;
//这也不会报错
$new_work->bose(new mouse());

運行結果:


cat say miaomiao...
dog say wangwang...
cat say miaomiao...

cat say miaomiao...

以上是php實作物件導向多態性方法的案例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn