課程
/后端開發
/PHP
/PHP進階篇
class Truck extends Car{
? ?function ?__construct(){
? ? ? ?$this->speed +=50;
? ?}
}
2017-06-02
源自:PHP進階篇 2-8
正在回答
你這是構造函數,我個人認為,根據題意說要覆蓋speedUp函數,應該這樣寫,
public?function?speedUp(){ ????????$this->speed+=50; ????????return?$this->speed; ????}
我認為這樣是實現了函數覆蓋,但答案說結果為60我就實在不能理解,在答案區也見不到此類回答。我百度一下PHP的覆蓋方法,得到如下結果,
所謂覆蓋,從本質上來說就是重寫。就是當子類繼承父類的一些方法后,子類又在其內部定義了相同的方法,則這個新定義的方法會覆蓋繼承而來的父類的方法,子類只能調用其內部定義的方法。
有以下幾點要求:
1.當一個父類和子類有一個方法,參數和名字完全一致,那么子類方法會覆蓋父類的方法。
2.在實行方法覆蓋的時候,訪問修飾符可以是不一樣的,但是子類的訪問范圍必須大于等于父類的訪問范圍。
3.要求參數和名字一樣。并不是要求子類,父類名稱相同。
綜上,我覺得我這種做法才是實現了覆蓋,希望能對你有所幫助。
qq_醉臥寒窗聽雨眠_0
該用戶已注冊
<?php class?Car?{ ????public?$speed?=?0;?//汽車的起始速度是0 ????public?function?speedUp()?{ ????????$this->speed?+=?10; ????????return?$this->speed; ????} } //?定義繼承于Car的Truck類 class?Truck?extends?Car{ ????//?構造函數,類被實例化的時候立即執行構造函數 ????function?__construct(){ ????????$this->speed?+=?50;?//?類的屬性(speed)增加50,如果在當前類中沒有找到屬性(speed)就去父類Car中尋找 ????} } $car?=?new?Truck();//?實例化Truck類 $car->speedUp();?//?調用類方法speedUp();如果在當前類中沒有找到方法(speedUp)就去父類Car中尋找 echo?$car->speed;?//?輸出類的屬性(speed):60
Truck 是Car的子類,$this->speed指針指向Truck類的speed,也就是父類的speed,因為是繼承來的嘛。然后就是把speed累加50.
表示類Truck繼承了Car,并給它寫了一個構造函數,在函數里將speed的值加50
舉報
輕松學習PHP中級課程,進行全面了解,用PHP快速開發網站程序
3 回答【求大神解釋】
5 回答大神們 求解釋?。。?!
2 回答求大神把每一行代碼解釋一遍
2 回答求大神解答
3 回答求助大神解答
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-07-12
你這是構造函數,我個人認為,根據題意說要覆蓋speedUp函數,應該這樣寫,
我認為這樣是實現了函數覆蓋,但答案說結果為60我就實在不能理解,在答案區也見不到此類回答。我百度一下PHP的覆蓋方法,得到如下結果,
所謂覆蓋,從本質上來說就是重寫。就是當子類繼承父類的一些方法后,子類又在其內部定義了相同的方法,則這個新定義的方法會覆蓋繼承而來的父類的方法,子類只能調用其內部定義的方法。
有以下幾點要求:
1.當一個父類和子類有一個方法,參數和名字完全一致,那么子類方法會覆蓋父類的方法。
2.在實行方法覆蓋的時候,訪問修飾符可以是不一樣的,但是子類的訪問范圍必須大于等于父類的訪問范圍。
3.要求參數和名字一樣。并不是要求子類,父類名稱相同。
綜上,我覺得我這種做法才是實現了覆蓋,希望能對你有所幫助。
2017-07-03
2017-06-02
Truck 是Car的子類,$this->speed指針指向Truck類的speed,也就是父類的speed,因為是繼承來的嘛。然后就是把speed累加50.
2017-06-02
表示類Truck繼承了Car,并給它寫了一個構造函數,在函數里將speed的值加50