課程
/后端開發
/PHP
/PHP-面向對象
1-2的時候不加static的時候老師說定義的變量是類的屬性啊?,F在加上static怎么還是類的屬性啊。那倆者還有什么區別?。??
2018-01-31
源自:PHP-面向對象 2-4
正在回答
你要明白整個流程你就明白他的區別。靜態屬性 靜態方法是一開始就已經創建在內存中了,而普通的方法屬性是實例化的時候動態分配內存空間的。
不加static 我理解為'對象屬性',只有實例化對象出來后,才能使用這些屬性;加了static,就是'類屬性',不需要實例化對象就可以直接使用了;
一切都是為了偷懶。
你定義了一個‘人類’:這個人類有2條腿(正常人),這是屬性;會走路,會說話,這是方法、行為。
定義了這個人類后,你將來要用的。用的時候,你把這個抽象的類變成了一個具體的實例(new對象),比如‘麻花疼’。有一天,你說麻花疼這臭不要臉的又騙了我很多錢,我要派人砍他幾條腿去!砍幾條?一個人有幾條腿?這時你可以用$麻花疼->腿,麻花疼的腿的屬性來得到這個值。很顯然的,你安排小弟去給麻花疼卸3條腿是不對的,小弟會給你報錯的。
有一天你又說小李子的百度坑人上當、干盡壞事,也給他卸幾條腿!卸幾條?你new 人類(‘李彥宏’);$李彥宏->腿,之后你知道小李子有幾條腿了。
到這里你發現里面的問題了,要知道一個正常人有幾條腿,沒必要具體到張三李四王二麻子,轉一圈再轉回來。直接從沒有實例化的‘人類’里取就行了。比如腿這個屬性,因為是常識性的,所有人都一樣的,所以定義類的時候直接定義就行了,前面加一個關鍵字static來表明它的與眾不同。
用的時候沒有必要實例化,你懂了吧。
怎樣用?人類->腿,這樣用?
這是錯誤的,“->”符號是給具體的對象用的。
沒有具體的對象,直接從類中取值,要用“::”符號: 人類::腿。
加上static是累的靜態屬性,不加則是普通屬性,靜態屬性不需要實例化類就可以調用,普通屬性必須實例化類后才能調用。
舉報
從面相過程到面向對象,帶你深入理解面向對象編程思想,體驗編程的奧妙!
2 回答static不是靜態屬性么?
2 回答trait成員屬性問題
1 回答_set _get是為未聲明的屬性設計的
1 回答不是說$hd是私有的嗎,為什么var_dump($computer)還可以打印出$hd???
1 回答\ 不用換成 / 也可以啊,為什么要換。不是多此一舉嗎???
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-10-29
你要明白整個流程你就明白他的區別。靜態屬性 靜態方法是一開始就已經創建在內存中了,而普通的方法屬性是實例化的時候動態分配內存空間的。
2018-07-22
不加static 我理解為'對象屬性',只有實例化對象出來后,才能使用這些屬性;加了static,就是'類屬性',不需要實例化對象就可以直接使用了;
2018-06-05
一切都是為了偷懶。
你定義了一個‘人類’:這個人類有2條腿(正常人),這是屬性;會走路,會說話,這是方法、行為。
定義了這個人類后,你將來要用的。用的時候,你把這個抽象的類變成了一個具體的實例(new對象),比如‘麻花疼’。有一天,你說麻花疼這臭不要臉的又騙了我很多錢,我要派人砍他幾條腿去!砍幾條?一個人有幾條腿?這時你可以用$麻花疼->腿,麻花疼的腿的屬性來得到這個值。很顯然的,你安排小弟去給麻花疼卸3條腿是不對的,小弟會給你報錯的。
有一天你又說小李子的百度坑人上當、干盡壞事,也給他卸幾條腿!卸幾條?你new 人類(‘李彥宏’);$李彥宏->腿,之后你知道小李子有幾條腿了。
到這里你發現里面的問題了,要知道一個正常人有幾條腿,沒必要具體到張三李四王二麻子,轉一圈再轉回來。直接從沒有實例化的‘人類’里取就行了。比如腿這個屬性,因為是常識性的,所有人都一樣的,所以定義類的時候直接定義就行了,前面加一個關鍵字static來表明它的與眾不同。
用的時候沒有必要實例化,你懂了吧。
怎樣用?人類->腿,這樣用?
這是錯誤的,“->”符號是給具體的對象用的。
沒有具體的對象,直接從類中取值,要用“::”符號: 人類::腿。
2018-02-02
加上static是累的靜態屬性,不加則是普通屬性,靜態屬性不需要實例化類就可以調用,普通屬性必須實例化類后才能調用。