国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP面向對象程序設計子類擴展父類(子類重新載入父類)操作詳解

2024-05-05 00:09:38
字體:
來源:轉載
供稿:網友

本文實例講述了PHP面向對象程序設計子類擴展父類(子類重新載入父類)操作。分享給大家供大家參考,具體如下:

在PHP中,會遇到這樣的情況,子類繼承父類,但是又需要對父類的屬性和方法進行一定的擴展,這時子類可以對屬性和方法進行重寫,覆蓋與父類同名的屬性和方法,但是如果父類的方法中的內容比較多,比如上百成千行代碼,這時只需使用”父類類名::方法” 或“parent::方法“來調用父類中被覆蓋的方法,有就是重新載入父類,然后再加上需要擴展的語句。

方法的重寫

<?php class Person{  public $name;  public function __construct($name="" ){    $this->name=$name;  }  public function say(){    echo "我叫".$this->name ;  }}?>
<?php  class Student extends Person{   public $name;   public function __construct($name=""){    $this->name =$name;   }//這里定義了一個和父類中同名的方法,將父類中的說話方法覆蓋并重寫 public function say(){    echo "我叫".$this->name .",今年25歲了" ; }}?>

重寫方法與訪問權限

在子類覆蓋父類的方法時要注意,在子類中重寫的方法的訪問權限一定不能低于父類被覆蓋的方法的訪問權限。例如父類中的方法的訪問權限是protected,那么在子類中重寫的方法的權限就要是protectedpublic。如果父類的方法是public權限,子類中要重寫的方法只能是public。總之在子類中重寫父類的方法時,一定要高于父類被覆蓋的方法的權限。

重寫時的參數數量

子類可以擁有與父類不同的參數數量,如下面的構造方法中,多添加了一個參數$age。

<?phpclass Student extends Person{ public $name; public $age; public function __construct($name="",$age=25){   $this->name =$name;   $this->age =$age; } public function say(){   echo "我叫".$this->name .",今年".$this->age."歲了" ; }}?>

上面的例子,通過覆蓋我們就實現了對“方法”擴展。
但是,像這樣做雖然解決了我們上面說的問題,但是在實際開發中,一個方法不可能就一條代碼或是幾條代碼,比如說“Person”類里面的“say()”方法有里面有100條代碼,如果我們想對這個方法覆蓋保留原有的功能外加上一點點功能,就要把原有的100條代碼重寫一次, 再加上擴展的幾條代碼,這還算是好的,而有的情況,父類中的方法是看不見原代碼的,這個時候你怎么去重寫原有的代碼呢?我們也有解決的辦法,就是在子類這個方法中可以調用到父類中被覆蓋的方法, 也就是把被覆蓋的方法原有的功能拿過來再加上自己的一點功能,可以通過兩種方法實現在子類的方法中調用父類被覆蓋的方法:

一種是使用父類的 “類名::” 來調用父類中被覆蓋的方法;

一種是使用 “parent::” 的方試來調用父類中被覆蓋的方法;

方法的擴展

<?phpclass Student extends Person{ public $name; public $age; public function __construct($name="",$age=25){  parent::__construct($name,$age);  $this->age =$age; } public function say(){  parent::say();  echo ",今年".$this->age."歲了" ; }}?>

上面所描述的只是重新加載了父類的屬性和方法,不是真正意義上的重載,只能說是子類對父類進行了擴展,在php中,也存在重載(overloading)一詞,但跟一般面向語言中的重載意義不同。

php中重載(overloading)參考: PHP面向對象_重載(overloading)

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 洛宁县| 河津市| 曲沃县| 莆田市| 巫山县| 乌苏市| 甘孜县| 桐庐县| 司法| 洪湖市| 府谷县| 那曲县| 泽州县| 侯马市| 会宁县| 阿克| 磴口县| 安国市| 中江县| 仙桃市| 诸暨市| 台南县| 临沭县| 灵寿县| 湘潭县| 宜君县| 平陆县| 辽阳市| 浠水县| 周口市| 措美县| 宁远县| 登封市| 望江县| 利辛县| 临颍县| 海盐县| 三门峡市| 金阳县| 陆良县| 邹城市|