<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • PHP中子類重載父類的方法介紹

    時(shí)間:2024-09-26 12:04:18 PHP 我要投稿
    • 相關(guān)推薦

    PHP中子類重載父類的方法介紹

      在PHP中不能定義重名的函數(shù),也包括不能再同一個(gè)類中定義重名的方法,所以也就沒有方法重載。單在子類中可以定義和父類重名的方法,因?yàn)楦割惖姆椒ㄒ呀?jīng)在子類中存在,這樣在子類中就可以把從父類中繼承過來的方法重寫。

      子類中重載父類的方法就是在子類中覆蓋從父類中繼承過來的方法,父類中的方法被子類繼承過來不就可以直接使用嗎?為什么還要重載呢?因?yàn)橛幸恍┣闆r我們必須要覆蓋的。例如,有一個(gè)“鳥”類,在這個(gè)類中定義了鳥的通用方法“飛翔”。將“鴕鳥”類作為它的子類,就會(huì)將“飛翔”的方法繼承過來,但只要一調(diào)用“鴕鳥”類中的這個(gè)“飛翔”的方法,鴕鳥就會(huì)飛走。雖然鴕鳥是不會(huì)飛的,但其他特性都具有“鳥類”的特性,所以在聲明“鴕鳥”類時(shí)還是可以繼承“鳥”類的,但必須在“鴕鳥”類中將“鳥”類中繼承過來的“飛翔”方法改寫,就需要在子類中重載父類中的方法。

      在下面的例子中,聲明的Person類中有一個(gè)“說話”方法,Student類繼承Person類后可以直接使用“說話”方法。但Person類中的“說話”方法只能說出它自己的成員屬性,而Student類對(duì)Person類進(jìn)行了擴(kuò)展,多添加了幾個(gè)新的成員屬性。代碼如下所示:

      name = $name;$this ->sex = $sex;$this ->age = $age;}//在人類中聲明一個(gè)通用的說話方法,介紹一下自己function say(){echo "我的名字:".$this-> name.",性別:".$this ->sex.",年齡:".$this ->age."。

      ";}}//聲明一個(gè)學(xué)生類,使用extends關(guān)鍵字?jǐn)U展(繼承)person類class Student extends Person {private $school; //在學(xué)生類中聲明一個(gè)所在學(xué)校school的成員屬性//覆蓋父類中的構(gòu)造方法,在參數(shù)列表中添加一個(gè)學(xué)校屬性,用來創(chuàng)建對(duì)象并初始化成員屬性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."學(xué)習(xí)

      ";}//定義一個(gè)和父類中同名的方法,將父類中的說話方法覆蓋并重寫,多說出所在的學(xué)校名稱function say(){echo "我的名字:".$this ->name.",性別:".$this ->sex.",年齡:".$this ->age.",在".$this ->school."學(xué)校上學(xué)

      ";}}$student= new Student("張三","男",20,"edu"); //創(chuàng)建一個(gè)學(xué)生對(duì)象,并傳給一個(gè)學(xué)校名稱參數(shù)$student -> say(); //調(diào)用學(xué)生類中覆蓋父類的說話方法?>

      改程序運(yùn)行后輸出的結(jié)果為:

      我的名字叫:張三,性別:男,我的年齡是:20,在edu學(xué)校上學(xué)

      在PHP中,提供了在子類重載的方法中調(diào)用父類被覆蓋方法的功能。這樣就可以在子類重寫的方法中,繼續(xù)使用從父類繼承過來并被覆蓋的方法,然后再按要求多添加一些新功能。調(diào)用的格式是使用“parent:方法名”在子類的重載方法中調(diào)用父類中被覆蓋的方法。將上例中的代碼修改一下,在子類重寫的構(gòu)造方法中使用“parent::__construct()”調(diào)用父類中被覆蓋的構(gòu)造方法,再多添加一條對(duì)子類中新擴(kuò)展的成員屬性初始化的代碼。在子類中重寫的say()方法中使用“parent::say()”調(diào)用父類中被覆蓋的say()方法,再添加上輸出子類成員屬性的功能。

      代碼如下所示:

      name = $name;$this ->sex = $sex;$this ->age = $age;}//在人類中聲明一個(gè)通用的說話方法,介紹一下自己function say(){echo "我的名字:".$this-> name.",性別:".$this ->sex.",年齡:".$this ->age."。

      ";}}//聲明一個(gè)學(xué)生類,使用extends關(guān)鍵字?jǐn)U展(繼承)person類class Student extends Person {private $school; //在學(xué)生類中聲明一個(gè)所在學(xué)校school的成員屬性//覆蓋父類中的構(gòu)造方法,在參數(shù)列表中添加一個(gè)學(xué)校屬性,用來創(chuàng)建對(duì)象并初始化成員屬性function __construct($name="",$sex="男",$age=1,$school=""){//調(diào)用父類中被覆蓋的構(gòu)造方法,為從父類中集成過來額出行賦初值parent::__construct($name,$sex,$age);$this ->school = $school;}function study(){echo $this ->name."正在".$this ->school."學(xué)習(xí)

      ";}//定義一個(gè)和父類中同名的方法,將父類中的說話方法覆蓋并重寫,多說出所在的學(xué)校名稱function say(){parent::say(); //調(diào)用父類中被本方法覆蓋掉的方法echo "在".$this ->school."學(xué)校上學(xué)

      ";}}$student= new Student("張三","男",20,"edu"); //創(chuàng)建一個(gè)學(xué)生對(duì)象,并傳給一個(gè)學(xué)校名稱參數(shù)$student -> say(); //調(diào)用學(xué)生類中覆蓋父類的說話方法?>

      上面的例子輸出的結(jié)果和前一個(gè)例子是一樣的,但在本例中通過在子類中直接調(diào)用父類中被覆蓋的方法要簡(jiǎn)便很多。另外,在子類覆蓋父類的方法時(shí)一定要注意,在子類中重寫的方法訪問權(quán)限一定不能低于父類被覆蓋的方法的訪問權(quán)限。例如,如果父類中的訪問權(quán)限是protected,那么在子類中重寫的方法的權(quán)限就要是protected或public。

    【PHP中子類重載父類的方法介紹】相關(guān)文章:

    PHP中關(guān)于類的定義10-02

    PHP面向?qū)ο笾剌d重寫的不同10-25

    PHP中date函數(shù)常用時(shí)間處理方法09-13

    php中static靜態(tài)變量的使用方法06-11

    Java方法繼承、重載和覆蓋總結(jié)05-09

    PHP錯(cuò)誤類型及屏蔽方法08-22

    簡(jiǎn)單分析PHP中序列化用法介紹08-15

    PHP中curl的使用實(shí)例07-31

    PHP處理密碼的幾種方法10-17

    十天學(xué)會(huì)php的方法09-23

    主站蜘蛛池模板: 最新在线精品国自av| 精品久久久久久无码专区| 日产精品久久久一区二区| 99国产精品国产免费观看| 国产亚洲欧美精品久久久| 亚洲国产成人精品女人久久久 | 国产亚洲精品a在线观看app| 少妇人妻偷人精品视频| 亚洲国产精品自产在线播放| 九九热这里只有国产精品| 91精品国产91久久久久久青草 | 久久夜色撩人精品国产小说| 99re66在线观看精品免费| 国产在线不卡午夜精品2021| 精品视频一区二区三三区四区| 亚州日韩精品专区久久久| 久久久久久久亚洲精品| 国产伦精品一区二区三区视频猫咪 | 国产精品186在线观看在线播放| 人妻少妇乱子伦精品| 真实国产乱子伦精品一区二区三区| 久久久精品人妻无码专区不卡 | 久久亚洲国产精品五月天婷| 国产色婷婷精品综合在线| Xx性欧美肥妇精品久久久久久 | 欧美精品一二区| 欧美巨大黑人精品videos| 国产精品91av| 欧美精品国产日韩综合在线| 91久久精品国产成人久久| 国产日韩精品无码区免费专区国产| 欧美久久精品一级c片片| 日韩一级精品视频在线观看| 久久97精品久久久久久久不卡| 福利姬在线精品观看| 99久久精品费精品国产一区二区 | 久久精品亚洲精品国产欧美| 人妻少妇看A偷人无码精品| 欧美成人精品欧美一级乱黄一区二区精品在线 | 最新国产精品精品视频| 亚洲日韩精品射精日|