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

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

大神瞧瞧哈

class Car {
? ?private static $speed = 10;
? ?
? ?public static function getSpeed() {
? ? ? ?return self::$speed;
? ?}
? ?public static function speedUp() {
? ? ? ?return self::$speed+=10;
? ?}
}
class BigCar extends Car {
? ?public static function start() {
? ? ? ?parent::speedUp();
? ?}
}BigCar::start();

echo BigCar::getSpeed();

這是這章節例子中的,結果是20,我想問的是BigCar::start();是將start()方法執行了一遍得到speed是等于20的,但是start()這個方法中沒有返回時,然后他再用echo BigCar::getSpeed();這種形式來輸出$speed的最終值嗎,是不是就是說在子類中speed執行了以后變成20,在父類屬性中的$speed也變成了20,于是乎調用執行父類中getspeed的方法所以輸出為20.請大神幫我解釋一下,

還有如果我去掉public static function getSpeed() {
? ? ? ?return self::$speed;
? ?}這一段然后末尾變成echo BigCar::start(); ? 然后給parent::speedUp();前面加return也能得到結果是20,這二個有區別嗎,感覺還是這個簡答啊,話有點多,,,,,望詳解。。。。。

正在回答

2 回答

第一,如果你問的是兩種寫法有沒有區別,我想我已經正面回答你。如果這不是你想知道的,請修改你的提問方式。

第二,$speed只有一個內存區域,意思就是你就算在子類中執行了一個方法修改,父類中的$speed值也是有變化的。

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

a10282465693872396 提問者

非常感謝!
2016-09-12 回復 有任何疑惑可以回復我~

第一,static的變量,是在類初始化的時候就已經保存在內存的,所以$speed只有一個內存區域。

第二,子類在調用start()的時候,執行了Car類的speedUp()方法,將$speed的值加了10. (只要“self::$speed+=10;”執行,無論有沒有return,這個值都已經變成了20)

第三,echo 可以把數據輸出到控制臺。如果echo后面跟的是變量,則把變量的值輸出;如果echo后面跟的是函數,則把函數的返回值(就是return的值)輸出;如果echo后面跟的是賦值運算,則把運算的結果輸出。

所以,你把getSpeed()的return改為echo的之后,執行到這一行的時候,就直接輸出了。

請指正。

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

a10282465693872396 提問者

能不能正面回答下我的所有問題。。。。第一,static的變量,是在類初始化的時候就已經保存在內存的,所以$speed只有一個內存區域。//這段話的意思是我后面speed無論如何變化他的變量屬性值都不會變了嗎
2016-09-12 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

大神瞧瞧哈

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

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

幫助反饋 APP下載

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

公眾號

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