久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      php中的重寫override

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

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

      <?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 ?>

      可以發(fā)現(xiàn)無(wú)論是公有屬性,還是受保護(hù)屬性都被覆蓋,而私有屬性因?yàn)闆]有被繼承,所以不受影響。

      <?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>"; ?>

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

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

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

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

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

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

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

      <?php class Fu{     private function show(){         echo __CLASS__,'<br/>';     } } class Zi extends Fu{     private function show($name){		//不會(huì)報(bào)錯(cuò),因?yàn)楸举|(zhì)不存在重寫(父類Fu::show沒有被繼承)         echo $name,'<br/>';     } } ?>

      d.重寫是指子類擁有特殊的情況,一般是需要在父類的基礎(chǔ)上進(jìn)行擴(kuò)展,此時(shí)如果想要繼續(xù)保證父類被重寫的方法繼續(xù)執(zhí)行(默認(rèn)永遠(yuǎn)只訪問(wèn)子類重寫的新方法),需要在子類重寫方法的時(shí)候使用parent關(guān)鍵字。

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

      小結(jié):parent不能訪問(wèn)父類的屬性,可以訪問(wèn)靜態(tài)屬性、靜態(tài)方法、類常量普通方法。

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

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)