這篇文章主要介紹了關於php物件導向之繼承,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
繼承
子類別繼承父類別所有的-公有(public) 和 受保護(protected)屬性和方法。
使用關鍵字extends
繼承,一個類別整合另一個,不能繼承多個。
子类、父类、基类、超类、派生类
子類別、衍生類別-> 繼承於基底類別的類別;
父類別、基底類別、超類別指-> ; 被繼承的類別。
<?php class Father { public $a = 'public'; protected $b = 'protected'; private $c = 'private'; public function func1() { echo 'This is public function','<br/>'; } protected function func2() { echo 'This is protected function','<br/>'; } private function func3() { echo 'This is private function','<br/>'; } } // 继承父类 class Child extends Father { // 子类中调用继承来的方法 public function test() { $this -> func1(); $this -> func2(); //$this -> func3(); 私有方法不可以调用 } } // 实例化子类 $son = new Child(); // 尝试调用属性 echo $son -> a,'<br/>'; //echo $son->b; 不能直接输出b //echo $son -> c; 继承都没继承,当然不能输出 // 尝试调用方法 //$son -> func1(); //$son -> func2(); 不能在类外调用func2 //$son -> func3(); 继承都没继承,当然不能调用 // 间接调用继承自父类的普通方法 $son -> test();
重寫
1)繼承父類別的方法,子類別中定義與父類別同名的方法,且參數個數相同;
2)當子類別重寫父類別中的方法時,php不會呼叫父類別中被重寫的方法;
3)是否呼叫父類別的方法,取決於子類別。
4)在實施方法覆蓋的時候,存取修飾符可以是不一樣的,但是子類別的存取範圍必須大於等於父類的訪問範圍。
parent:: 访问父类中被重写的属性和方法
<?php class Father { public function shuo($num) { echo 'a a o o'; } } class Son extends Father { public function shuo($num) { // 调用父类中被重写的方法 // parent::shuo($num); echo 'Hello World'; } public function test($num) { parent::shuo($num); } } // 实例化子类 $son1 = new Son(); $son1 -> shuo(1); // Hello World $son1 -> test(1); // a a o o
final關鍵字
如果父類別中的方法被宣告為final,則子類別無法複寫該方法。
如果一個類別被宣告為final,則不能被繼承。
<?php class Father { final public function test() { echo 'hello'; } } class Son extends Father { public function test() { echo '你好'; } } // 实例化子类 $son1 = new Son(); $son1 -> test(); // 报错,函数不能被重写
相關推薦:
#
以上是php物件導向之繼承的詳細內容。更多資訊請關注PHP中文網其他相關文章!