這篇文章主要介紹了PHP多態代碼實例,本文用2個代碼實例來演示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());
新聞熱點
疑難解答