站長資訊網
        最全最豐富的資訊網站

        php中的重寫override

        定義:重寫(override),即子類中定義了與父類重名的成員,子類可以重寫父類任意類成員,通常重寫是用來重寫父類的方法,用于擴展或者更改某些業務邏輯。

        1.不管是公有和是受保護屬性,一旦重寫父類的就會不存在,而私有屬性不會被覆蓋而丟失。

        <?php     class A{                public $name='張三';         protected $sex='man';         private  $age='25';          public function getName(){            echo __CLASS__,'<br/>';            echo $this->name."<br>";         }         protected function getSex(){             echo __CLASS__,'<br/>';             echo $this->sex."<br>";         }         private function getAge(){             echo __CLASS__,'<br/>';             echo $this->age."<br>";         }      }     class B extends A{                  public $name='王五';         protected $sex='woman';         private  $age='26';                       public function getAll(){             echo $this->name."<br>";             echo $this->sex."<br>";             echo $this->age."<br>";         }     }      $a=new B();     var_dump($a);        /* object(B)#1 (4)     { ["name"]=> string(6) "王五"       ["sex":protected]=> string(5) "woman"       ["age":"B":private]=> string(2) "26"       ["age":"A":private]=> string(2) "25"    }*/          echo "<br>";     $a->getAll();//王五 woman 26 ?>

        可以發現無論是公有屬性,還是受保護屬性都被覆蓋,而私有屬性因為沒有被繼承,所以不受影響。

        <?php     class A{                public $name='張三';         protected $sex='man';         private  $age='25';          public function getName(){                        echo $this->name."我是父類的getName"."<br>";         }         protected function getSex(){                          echo $this->sex."我是父類的getSex"."<br>";         }         private function getAge(){                          echo $this->age."我是父類的getAge"."<br>";         }      }     class B extends A{                  public $name='王五';         protected $sex='woman';         private  $age='26';          public function getName(){                        echo $this->name."我是子類的getName"."<br>";         }         protected function getSex(){                        echo $this->sex."我是子類的getSex"."<br>";         }         private function getAge(){                        echo $this->age."我是子類的getAge"."<br>";         }         public function getAll(){             $this->getName();             $this->getSex();             $this->getAge();         }     }      $a=new B();     $a->getAll();//王五我是子類的getName woman我是子類的getSex 26我是子類的getAge     echo "<br>"; ?>

        小結:公有、受保護的屬性重寫是直接覆蓋父類成員,私有屬性不會被覆蓋;公有、收保護的方法會被重寫,但是私有方法不會被重寫(私有方法本質沒有被繼承)。

        2.子類重寫父類方法的要求。

        a. 子類重寫父類的方法,控制權不能高于父類,即子類可以比父類更開放。

        <?php class Fu{     protected function show(){         echo __CLASS__,'<br/>';     } } class Zi extends Fu{     protected function show(){}				//正確     public function show(){}				//允許     private function show(){}				//錯誤:控制權比父類更嚴格 } ?>

        b. PHP中重寫要求子類重寫父類方法的時候,必須保證與父類同名方法參數一致。

        <?php class Fu{     protected function show(){         echo __CLASS__,'<br/>';     } } class Zi extends Fu{     public function show(){}     public function show($a){}			//錯誤,與父類同名方法不一致 } ?>

        c. 重寫針對的是被繼承的成員,父類私有方法不會被繼承,因此不受要求b規定。

        <?php class Fu{     private function show(){         echo __CLASS__,'<br/>';     } } class Zi extends Fu{     private function show($name){		//不會報錯,因為本質不存在重寫(父類Fu::show沒有被繼承)         echo $name,'<br/>';     } } ?>

        d.重寫是指子類擁有特殊的情況,一般是需要在父類的基礎上進行擴展,此時如果想要繼續保證父類被重寫的方法繼續執行(默認永遠只訪問子類重寫的新方法),需要在子類重寫方法的時候使用parent關鍵字。

        <?php class Fu{     protected function show(){         echo __CLASS__,'<br/>';     } } class Zi extends Fu{     public function show(){         parent::show();                  //擴展業務邏輯         echo __CLASS__,'<br/>';     } }?>

        小結:parent不能訪問父類的屬性,可以訪問靜態屬性靜態方法類常量普通方法

        推薦:php教程,php視頻入門教程

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 日韩欧精品无码视频无删节 | 成人午夜精品网站在线观看| 亚洲国产精品尤物YW在线观看| 亚洲精品无码永久在线观看| 精品一久久香蕉国产线看播放| 久久这里只有精品18| 国产一区麻豆剧传媒果冻精品| 久久久久久国产精品免费免费| 久久99亚洲综合精品首页| 亚洲国产精品丝袜在线观看| 国内精品91最新在线观看| 99久久国产综合精品网成人影院 | 亚洲欧美国产精品专区久久| 992tv精品视频tv在线观看| 久久夜色撩人精品国产小说| 国产精品 视频一区 二区三区| 91精品国产色综合久久| 精品免费久久久久久久| 亚洲精品tv久久久久| 日韩精品一区二三区中文| 91麻豆精品视频| 日韩欧精品无码视频无删节 | 国内精品久久久久久不卡影院 | 真实国产精品vr专区| 久久久精品久久久久久| 精品亚洲成α人无码成α在线观看 | 国产一区二区精品尤物| 国产精品内射视频免费| 日本一区精品久久久久影院 | 欧美久久亚洲精品| 国产精品一区二区久久精品无码| 国产精品igao视频| 日韩精品无码免费视频| 久久精品国产亚洲av高清漫画 | 国产成人精品免费视频网页大全| 精品久久久久久久久午夜福利| 青青草原精品99久久精品66| 亚洲综合无码精品一区二区三区| 国产精品美女一区二区视频| 国产成人精品久久一区二区三区| 久久亚洲精品成人AV|