萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php怎麼寫重寫?php方法重寫介紹

php怎麼寫重寫?php方法重寫介紹

小編推薦的這篇文章介紹了php方法的重寫,有興趣的同學可以參考一下,非常有用。

方法的重寫/方法的覆蓋(override)
當一個父類知道所有的子類都有一個方法,但是父類不能確定該方法究竟如何寫,

可以讓子類去覆蓋這個方法,具體用法如下:

  •  代碼如下復制代碼
    • <?php  

    •  //抽象一個Animal類  

    •        class Animal{  

    •               public $name;  

    •               protected $price;  

    •               function cry(){  

    •                      echo "不知道動物怎麼叫..";  

    •                      echo "
      ";  

    •               }  

    •        }  

    •        class Dog extends Animal{  

    •               //覆蓋父類中的 cry()方法  

    •                 function cry(){  

    •                      echo "小狗汪汪叫..";  

    •                      echo "
      ";  

    •               }  

    •        }  

    •        class Pig extends Animal{  

    •               //覆蓋父類中的 cry()方法

    •               function cry(){  

    •                      echo "小豬哼哼叫..";  

    •                      echo "
      ";  

    •               }  

    •        }  

    •        //創建一個只狗  

    •        $animal=new Animal();  

    •        $animal->cry();  

    •        $dog1=new Dog();  

    •        $dog1->cry();  

    •        $pig1=new Pig();  

    •        $pig1->cry();  

    • ?> 

關於方法重寫細節討論:
方法重寫就是子類有一個方法,和父類的某個方法的名稱、參數個數一樣,那麼我們就說子類的這個方法重寫了父類的那個方法。
1. 要實現重寫,要求 子類的那個方法的名字和參數個數一摸一樣,但是並不要求參數的名稱一樣.
2. 如果子類要去調用父類的某個方法(public / protected) 則可以使用 parent::方法名(參數..) , 父類名::方法名(參數...)
3. 在實現方法覆蓋的時候,訪問修飾符可以不一樣       //但是必須滿足: 子類的訪問范圍>=父類的訪問范圍
注意:當父類的函數為私有(private)類型時,不能覆蓋,因為父類為私有該函數根本不能繼承。

 代碼如下復制代碼 // 多態體現在什麼地方?
// class Animal{
//               public function cry(){
//                      echo '動物叫喚..';
//               }
//        }
//        class Cat extends Animal{
//               public  function cry(){
//                      echo "abc";
//               }
//        }
//        $cat1=new Cat();
//        $cat1->cry();


// 當子類沒有覆蓋父類的方法則 $cat1->cry() 調用的是父類,當 子類覆蓋了父類的方法,則調用自己的cry()


copyright © 萬盛學電腦網 all rights reserved