為啥子也是20
<?php class?Car?{ ????private?static?$speed?=?10; ???? ????public?function?getSpeed()?{ ????????return?self::$speed; ????} ???? ????//在這里定義一個靜態方法,實現速度累加10 ???? ????public?static?function?speedUp(){ ???????return?self::$speed+=10; ????} } $car?=?new?Car(); echo?Car::speedUp();?//調用靜態方法加速20 echo?$car->getSpeed();??//調用共有方法輸出當前的速度值20
echo $car->getSpeed(); 這句話 ?怎么也是調用跟echo Car::speedUp();一樣的???
echo $car->getSpeed(); ? 這個不是直接調用前面那個?getSpeed();的方法么 ? 答案應該是10 怎么變成了20哎
2019-04-24
<?php
class Car {
? ? private static $speed = 10;
? ??
? ? public function getSpeed() {
? ? ? ? return self::$speed;
? ? }
? ??
? ? //在這里定義一個靜態方法,實現速度累加10
? ? public static function speedUp() {
? ? ? ? return self::$speed+=10;
? ? }
}
$car = new Car();? //初始化
?$car->getSpeed();//調用一次getSpeed獲取到初始化10
Car::speedUp();? //調用靜態方法加速根據獲取到的10進行增加10=20
Car::speedUp();? //調用靜態方法加速,在之前的基礎上再增加10=20+10=30
Car::speedUp();? //調用靜態方法加速在之前的基礎上再增加10=30+10=40
echo $car->getSpeed();? //調用共有方法輸出當前的速度值? 最終打印出來是40
2018-08-07
個人理解?
echo
?Car::speedUp(); 靜態調用結果speed=20 當調用
echo
?$car
->getSpeed()
方法里面的?
return
?self::
$speed
;中的self指向內存中的speed=20,并內有對他進行任何的改變,所以兩次都是20,
2017-08-20
因為$speed是靜態的屬性,被speedUp調用以后是不會釋放值的。所以第一次調用speedUp會在10的基礎上加10,這個屬性的值本身就被變了。