麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

PHP中子類重載父類的方法【parent--方法名】

2020-03-22 19:54:17
字體:
來源:轉載
供稿:網友
在PHP中不能定義重名的函數,也包括不能再同一個類中定義重名的方法,所以也就沒有方法重載。單在子類中可以定義和父類重名的方法,因為父類的方法已經在子類中存在,這樣在子類中就可以把從父類中繼承過來的方法重寫。
子類中重載父類的方法就是在子類中覆蓋從父類中繼承過來的方法,父類中的方法被子類繼承過來不就可以直接使用嗎?為什么還要重載呢?因為有一些情況我們必須要覆蓋的。例如,有一個“鳥”類,在這個類中定義了鳥的通用方法“飛翔”。將“鴕鳥”類作為它的子類,就會將“飛翔”的方法繼承過來,但只要一調用“鴕鳥”類中的這個“飛翔”的方法,鴕鳥就會飛走。雖然鴕鳥是不會飛的,但其他特性都具有“鳥類”的特性,所以在聲明“鴕鳥”類時還是可以繼承“鳥”類的,但必須在“鴕鳥”類中將“鳥”類中繼承過來的“飛翔”方法改寫,就需要在子類中重載父類中的方法。
在下面的例子中,聲明的Person類中有一個“說話”方法,Student類繼承Person類后可以直接使用“說話”方法。但Person類中的“說話”方法只能說出它自己的成員屬性,而Student類對Person類進行了擴展,多添加了幾個新的成員屬性。代碼如下所示:
html' target='_blank'>class Person{protected $name;protected $sex;protected $Wage;function __construct($name="",$sex="男",$age=1){$this - name = $name;$this - sex = $sex;$this - age = $age;//在人類中聲明一個通用的說話方法,介紹一下自己function say(){echo "我的名字:".$this- name.",性別:".$this - sex.",年齡:".$this - age."。 br ";//聲明一個學生類,使用extends關鍵字擴展(繼承)person類class Student extends Person {private $school; //在學生類中聲明一個所在學校school的成員屬性//覆蓋父類中的構造方法,在參數列表中添加一個學校屬性,用來創建對象并初始化成員屬性function __construct($name="",$sex="男",$age=1,$school=""){$this - name = $name;$this - sex = $sex;$this - age = $age;$this - school = $school;function study(){echo $this - name."正在".$this - school."學習 br //定義一個和父類中同名的方法,將父類中的說話方法覆蓋并重寫,多說出所在的學校名稱function say(){echo "我的名字:".$this - name.",性別:".$this - sex.",年齡:".$this - age.",在".$this - school."學校上學 br $student= new Student("張三","男",20,"edu"); //創建一個學生對象,并傳給一個學校名稱參數$student - say(); //調用學生類中覆蓋父類的說話方法 改程序運行后輸出的結果為:
我的名字叫:張三,性別:男,我的年齡是:20,在edu學校上學
在PHP中,提供了在子類重載的方法中調用父類被覆蓋方法的功能。這樣就可以在子類重寫的方法中,繼續使用從父類繼承過來并被覆蓋的方法,然后再按要求多添加一些新功能。調用的格式是使用“parent:方法名”在子類的重載方法中調用父類中被覆蓋的方法。將上例中的代碼修改一下,在子類重寫的構造方法中使用“parent::__construct()”調用父類中被覆蓋的構造方法,再多添加一條對子類中新擴展的成員屬性初始化的代碼。在子類中重寫的say()方法中使用“parent::say()”調用父類中被覆蓋的say()方法,再添加上輸出子類成員屬性的功能。代碼如下所示:
class Person{protected $name;protected $sex;protected $Wage;function __construct($name="",$sex="男",$age=1){$this - name = $name;$this - sex = $sex;$this - age = $age;//在人類中聲明一個通用的說話方法,介紹一下自己function say(){echo "我的名字:".$this- name.",性別:".$this - sex.",年齡:".$this - age."。 br ";//聲明一個學生類,使用extends關鍵字擴展(繼承)person類class Student extends Person {private $school; //在學生類中聲明一個所在學校school的成員屬性//覆蓋父類中的構造方法,在參數列表中添加一個學校屬性,用來創建對象并初始化成員屬性function __construct($name="",$sex="男",$age=1,$school=""){//調用父類中被覆蓋的構造方法,為從父類中集成過來額出行賦初值parent::__construct($name,$sex,$age);$this - school = $school;function study(){echo $this - name."正在".$this - school."學習 br //定義一個和父類中同名的方法,將父類中的說話方法覆蓋并重寫,多說出所在的學校名稱function say(){parent::say(); //調用父類中被本方法覆蓋掉的方法echo "在".$this - school."學校上學 br $student= new Student("張三","男",20,"edu"); //創建一個學生對象,并傳給一個學校名稱參數$student - say(); //調用學生類中覆蓋父類的說話方法 上面的例子輸出的結果和前一個例子是一樣的,但在本例中通過在子類中直接調用父類中被覆蓋的方法要簡便很多。另外,在子類覆蓋父類的方法時一定要注意,在子類中重寫的方法訪問權限一定不能低于父類被覆蓋的方法的訪問權限。例如,如果父類中的訪問權限是protected,那么在子類中重寫的方法的權限就要是protected或public
以上內容是小編給大家介紹的PHP中子類重載父類的方法【parent::方法名】的相關內容,希望對大家有所幫助!如果大家想了解更多資訊,敬請關注phpstudy網站!PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黑人一级片 | 免费毛片在线 | 欧美在线观看视频一区二区 | 久久色播 | 国产艳妇av视国产精选av一区 | 9999久久久久久 | 成人免费观看av | 91在线视频在线观看 | 亚洲国产在| 免费国产人成网站 | www.精品一区 | 在线a亚洲视频播放在线观看 | 99精品国产小情侣高潮露脸在线 | 久久精热 | 在线播放中文 | 男男羞羞视频网站国产 | 日韩美女电影 | 国产精品高潮99久久久久久久 | 一级黄色毛片子 | 欧美交在线 | 亚洲精品午夜电影 | 国产日韩中文字幕 | 久久国产精品99国产 | 久久色伦理资源站 | 91 久久 | 欧美综合在线观看视频 | 性片网站 | 国产91久久久久久 | 免费在线观看午夜视频 | 成人在线97 | 欧美成人自拍 | 91久久国产综合精品女同国语 | 福利在线国产 | 黄色视频a级毛片 | 多男操一女视频 | 北京一级毛片 | av在线免费观看网 | 中文字幕1区2区 | 看av网址 | 91精品国产99久久久久久红楼 | 男男羞羞视频网站国产 |