亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

求老師、大神 解釋

class Truck extends Car{

? ?function ?__construct(){

? ? ? ?$this->speed +=50;

? ?}

}


正在回答

4 回答

你這是構造函數,我個人認為,根據題意說要覆蓋speedUp函數,應該這樣寫,

public?function?speedUp(){
????????$this->speed+=50;
????????return?$this->speed;
????}

我認為這樣是實現了函數覆蓋,但答案說結果為60我就實在不能理解,在答案區也見不到此類回答。我百度一下PHP的覆蓋方法,得到如下結果,

所謂覆蓋,從本質上來說就是重寫。就是當子類繼承父類的一些方法后,子類又在其內部定義了相同的方法,則這個新定義的方法會覆蓋繼承而來的父類的方法,子類只能調用其內部定義的方法。

有以下幾點要求:

1.當一個父類和子類有一個方法,參數和名字完全一致,那么子類方法會覆蓋父類的方法。

2.在實行方法覆蓋的時候,訪問修飾符可以是不一樣的,但是子類的訪問范圍必須大于等于父類的訪問范圍。

3.要求參數和名字一樣。并不是要求子類,父類名稱相同。

綜上,我覺得我這種做法才是實現了覆蓋,希望能對你有所幫助。

1 回復 有任何疑惑可以回復我~
#1

qq_醉臥寒窗聽雨眠_0

我認為出題者是想著先調用父類方法之后在調用子類方法,我和你的想法差不多, 不過在子類方法中加上了父類方法的調用。直接使用了parent調用父類的方法。感覺使用構造方法雖然結果正確,但是不符合出題者思維。
2017-07-26 回復 有任何疑惑可以回復我~
#2

該用戶已注冊

我也覺得你是對的,如果非要咬字眼的話,累加50,可能是在原來的基礎上加50,也就是先調用父的,再加50
2017-09-26 回復 有任何疑惑可以回復我~
<?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


1 回復 有任何疑惑可以回復我~

Truck 是Car的子類,$this->speed指針指向Truck類的speed,也就是父類的speed,因為是繼承來的嘛。然后就是把speed累加50.

1 回復 有任何疑惑可以回復我~

表示類Truck繼承了Car,并給它寫了一個構造函數,在函數里將speed的值加50


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
PHP進階篇
  • 參與學習       181921    人
  • 解答問題       2668    個

輕松學習PHP中級課程,進行全面了解,用PHP快速開發網站程序

進入課程

求老師、大神 解釋

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號