大神瞧瞧哈
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();
這是這章節(jié)例子中的,結(jié)果是20,我想問的是BigCar::start();是將start()方法執(zhí)行了一遍得到speed是等于20的,但是start()這個方法中沒有返回時,然后他再用echo BigCar::getSpeed();這種形式來輸出$speed的最終值嗎,是不是就是說在子類中speed執(zhí)行了以后變成20,在父類屬性中的$speed也變成了20,于是乎調(diào)用執(zhí)行父類中g(shù)etspeed的方法所以輸出為20.請大神幫我解釋一下,
還有如果我去掉public static function getSpeed() {
? ? ? ?return self::$speed;
? ?}這一段然后末尾變成echo BigCar::start(); ? 然后給parent::speedUp();前面加return也能得到結(jié)果是20,這二個有區(qū)別嗎,感覺還是這個簡答啊,話有點多,,,,,望詳解。。。。。
2016-09-12
第一,如果你問的是兩種寫法有沒有區(qū)別,我想我已經(jīng)正面回答你。如果這不是你想知道的,請修改你的提問方式。
第二,$speed只有一個內(nèi)存區(qū)域,意思就是你就算在子類中執(zhí)行了一個方法修改,父類中的$speed值也是有變化的。
2016-09-12
第一,static的變量,是在類初始化的時候就已經(jīng)保存在內(nèi)存的,所以$speed只有一個內(nèi)存區(qū)域。
第二,子類在調(diào)用start()的時候,執(zhí)行了Car類的speedUp()方法,將$speed的值加了10. (只要“self::$speed+=10;”執(zhí)行,無論有沒有return,這個值都已經(jīng)變成了20)
第三,echo 可以把數(shù)據(jù)輸出到控制臺。如果echo后面跟的是變量,則把變量的值輸出;如果echo后面跟的是函數(shù),則把函數(shù)的返回值(就是return的值)輸出;如果echo后面跟的是賦值運算,則把運算的結(jié)果輸出。
所以,你把getSpeed()的return改為echo的之后,執(zhí)行到這一行的時候,就直接輸出了。
請指正。