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

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

問下 我對 這個代碼的理解是否正確

?class Car {
? ?private static $speed = 10;
? ?
? ?public static function getSpeed() {
? ? ? ?return self::$speed;
? ?}
? ?
? ?public static function speedUp() {
? ? ? ?return self::$speed+=10;
? ?}
} // 這個是父類 第一個$speed ?是私有的靜態的屬性 值是10 ?第二個getSpeed 是公共的靜態方法 這個方法 是獲取 ?這個父類里面的屬性$speed的 self是什么意思 不清楚 ? 然后第三個是類里面的方法 ?是讓這個父類里面的$speed屬性 自加10的意思 我不懂 第二個 方法 有啥用 就是獲取么?那么 刪除掉 第二個方法 直接運行 第三個方法 讓$speed屬性自加10不行么?第二個 方法 有什么用呢?


class BigCar extends Car {
? ?public static function start() {
? ? ? ?parent::speedUp(); //這個是子類了 ? ?這個子類里面的start()方法 就是調用 父類里面的speedUp這個 方法的
? ?}
}

BigCar::start();echo BigCar::getSpeed();

求高手 詳細 解答 萬分感謝 ?特別是 父類 里面的 第二個方法 ?我不知道有啥用 ?可以省略么?如果省略 會怎么樣?

正在回答

5 回答

你的報錯問題是,你把方法刪了,還去調用那個方法。echo BigCar::getSpeed(); ? 去掉這行。


1、靜態屬性 是共享的,而不是一個實例對象對應一個屬性。 每一個實例對象都可以對它進行操作。

2、靜態屬性可以通過普通方法調用。

3、2都回答了可以通過普通方法調用啦。

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

慕姐4424294 提問者

非常感謝!萬分感謝啊
2015-12-05 回復 有任何疑惑可以回復我~
#2

木子舟義 回復 慕姐4424294 提問者

不客氣 加油
2015-12-05 回復 有任何疑惑可以回復我~

我說 你刪除getSpeed方法后的報錯代碼哦

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

慕姐4424294 提問者

Fatal error: Call to undefined method BigCar::getSpeed() in /26/544/903x/index.php on line 17
2015-12-05 回復 有任何疑惑可以回復我~
#2

慕姐4424294 提問者

大哥 還有個問題想問下 第一 為什么會出現 靜態屬性 靜態方法呢?這個靜態 有啥用啊?和前面學的普通 屬性 普通方法 有啥區別??? 第二 我問下 比如一個類 他的屬性是 靜態了 那么 它里面的方法 也必須是靜態么? 第三 比如一個類 它的里面的屬性 是私有靜態的 那么我想獲得這個屬性 就需要 用一個公共的 靜態方法來獲得?還是公共的普通方法 來獲得? 萬分感謝?。。。?!
2015-12-05 回復 有任何疑惑可以回復我~
#3

qq_貧道法號劫財_0 回復 慕姐4424294 提問者

第一個問題我也不清楚; 第二:不需要,因為可以通過普通方法調用如class Car { private static $speed = 10; public function getSpeed() { return self::$speed; } } 第三:不需要,通過self::$speed獲取就行了
2016-05-03 回復 有任何疑惑可以回復我~

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(); ?


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

你把代碼發給我看一下

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

慕姐4424294 提問者

超過三百字 我提問 的代碼 就是啊 你可以把// 內容去掉 就好了
2015-12-05 回復 有任何疑惑可以回復我~

第二個方法存在的意義是,在你不想對$speed進行 假發運算時就想得到它的值時調用它。

你要是覺得,你每次想訪問$speed值的時候 想得到的結果就是當前值 + 10 后的結果的話,可以省略

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

慕姐4424294 提問者

可是我去掉 這個 方法 public static function getSpeed() { return self::$speed; } 就會報錯啊 為什么呢
2015-12-05 回復 有任何疑惑可以回復我~
#2

慕姐4424294 提問者 回復 慕姐4424294 提問者

我理解 是不是 把這個刪除 那么 父類 里面 那個speedUp() 方法 就不能運行了啊? 因為沒有提取 父類 里面 私有屬性$speed呢?是這樣么? 我必須先用 getSpeed() 這個方法 提取 出來這個私有的屬性 然后 在用speedUp()這個方法 自加呢? 可以這么理解么 萬分感謝
2015-12-05 回復 有任何疑惑可以回復我~
#3

qq_貧道法號劫財_0 回復 慕姐4424294 提問者

你在Car類中定義一個公共的getSpeed(),然后讓class BigCar extends(繼承) Car 那么BigCar就會繼承getSpeed(),最后用echo BigCar::getSpeed();調用父類的getSpeed()。當你刪掉 方法 public static function getSpeed()時就會報錯,因為找不到這個方法。不是因為私有屬性要提取。
2016-05-03 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

問下 我對 這個代碼的理解是否正確

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

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

幫助反饋 APP下載

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

公眾號

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