一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

PHP中子類(lèi)重載父類(lèi)的方法介紹

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

PHP中子類(lèi)重載父類(lèi)的方法介紹

  在PHP中不能定義重名的函數,也包括不能再同一個(gè)類(lèi)中定義重名的方法,所以也就沒(méi)有方法重載。單在子類(lèi)中可以定義和父類(lèi)重名的方法,因為父類(lèi)的方法已經(jīng)在子類(lèi)中存在,這樣在子類(lèi)中就可以把從父類(lèi)中繼承過(guò)來(lái)的方法重寫(xiě)。

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

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

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

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

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

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

  改程序運行后輸出的結果為:

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

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

  代碼如下所示:

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

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

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

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

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

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

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

PHP面向對象重載重寫(xiě)的不同10-25

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

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

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

PHP錯誤類(lèi)型及屏蔽方法08-22

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

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

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

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

一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看