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

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

關于構造函數私有方法

http://img1.sycdn.imooc.com//58856e8e0001fd1403740462.jpg

我看不懂self::$_object = new Car();

新建一個對象,賦值給一個靜態變量?

正在回答

1 回答

個人理解,靜態變量也是變量,與動態變量的作用一樣,存儲信息等,當然也有自己的特性,比如,在類中,靜態的成員,可以在類未實例化之前就能使用,也就是說可以使用類名調用。結合單例設計模式,為了不讓用戶直接實例化對象,需要將構造函數隱藏,但是,我們還是需要能夠創建對象,這個時候就需要提供一個函數,這個函數不用對象也能調用, 也就是說能用類名調用, 我們知道靜態函數是不能訪問非靜態成員的, 那么就需要一個靜態變量保存這個類的實例,如果這個值是空,就實例化一個對象并賦值給他,否則直接返回該值,保證在運行期間此類只有一個對象存在。大神勿噴。


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

懷中貓 提問者

我還有兩個疑惑,1:我沒見過new Car()賦值給不是對象的用法,可以再詳細說明下嗎?賦值給靜態變量,具體賦了什么值,這個值和普通建立一個對象有什么區別?2:那在類里面實例化對象和外面實例化對象有什么區別呢?應該不僅僅是里面可以用靜態方法吧?按照圖里的調用,結果應該(我猜測)只輸出一次"object create",就是說類里面的new Car()實際上是不會調用構造函數的。
2017-01-23 回復 有任何疑惑可以回復我~
#2

_pkm_ 回復 懷中貓 提問者

php是松類型的語言,不像c++,java,需要 Object obj = new Object();的方式去實例化對象,你給變量什么值,他就是什么類型,你可以使用gettype(var_name);查看他的類型,1,所以這里new Car();賦值給變量,那個變量就是object的類型.2,類外類里面實例化沒有區別,如果構造函數是私有的,就只能在類內部才能調用.3,單例模式下,構造函數只會調用一次,本例子"object create"只會輸出一次,這次就是調用的構造函數。4,只要成員是公有的,不管是不是靜態,內部外部都能調用。
2017-01-23 回復 有任何疑惑可以回復我~
#3

懷中貓 提問者

謝謝大神耐心講解!
2017-01-23 回復 有任何疑惑可以回復我~
#4

_pkm_ 回復 懷中貓 提問者

我也是新手。相互學習,不客氣啦
2017-01-23 回復 有任何疑惑可以回復我~
查看1條回復

舉報

0/150
提交
取消
PHP進階篇
  • 參與學習       181921    人
  • 解答問題       2668    個

輕松學習PHP中級課程,進行全面了解,用PHP快速開發網站程序

進入課程

關于構造函數私有方法

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

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

幫助反饋 APP下載

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

公眾號

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