1. 程式人生 > >PHP 面向物件通過繼承實現多型

PHP 面向物件通過繼承實現多型

<?php
    abstract class Vegetables{  //定義抽象類Vegetables
        abstract function go_Vegetables();  //定義抽象方法go_Vegetables()
    }
    class Vegetables_potato extends Vegetables{ //馬鈴薯類繼承抽象類
        public function go_Vegetables(){    //重寫抽象方法
            echo "我們開始種植馬鈴薯~";  //輸出資訊
        }
    }
    class Vegetables_radish extends Vegetables{ //蘿蔔類繼承蔬菜類
        public function go_Vegetables(){    //重寫抽象方法
            echo "我們開始種植胡蘿蔔~";
        }
    }
    function change($obj){  //自定義方法根據物件呼叫不同的方法
        if ($obj instanceof Vegetables){    //instanceof 關鍵字:物件是否屬於介面
            $obj->go_Vegetables();
        }else{
            echo "傳入的引數不是一個物件";
        }
    }
    echo "例項化Vegetables_potato:";
    change(new Vegetables_potato());    //例項化Vegetables_potato
    echo "<br/>";
    echo "例項化Vegetables_radish:";
    change(new Vegetables_radish());    //例項化Vegetables_radish
    /* 執行結果:
        例項化Vegetables_potato:我們開始種植馬鈴薯~
        例項化Vegetables_radish:我們開始種植胡蘿蔔~
    */