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