首頁  >  文章  >  後端開發  >  php和java中靜態變數static

php和java中靜態變數static

巴扎黑
巴扎黑原創
2016-11-23 15:34:391028瀏覽

因為靜態成員是在類別第一次載入的時候就創建的,所以在類別的外部不需要物件而使用類別名稱就可以存取的到靜態的成員;靜態成員被這個類別的每個實例物件所共享,那麼我們php語言使用物件可不可以存取類別中的靜態成員?

靜態的成員不是在每個物件內部存在的,但是每個物件都可以共享,所以我們如果使用物件存取成員的話就會出現沒有這個屬性定義,使用物件存取不到靜態成員的,在其它的在物件導向的語言中, 

Java是可以使用物件的方式存取靜態成員的 

類別裡面的靜態方法只能存取類別的靜態的屬性,在類別裡面的靜態方法是不能存取類別的非靜態成員的,原因很簡單,我們要想在本類別的方法中存取本類別的其它成員,我們需要使用$this這個引用,而$this這個引用指針是代表調用此方法的對象,我們說了靜態的方法是不用物件呼叫的,而是使用類別名稱來訪問,所以根本就沒有物件存在,也就沒有$this這個引用了,沒有了$this這個引用就不能訪問類別裡面的非靜態成員,又因為類別裡面的靜態成員是可以不用物件來存取的,所以類別裡面的靜態方法只能存取類別的靜態的屬性,即然$this不存在,在靜態方法中訪其它靜態成員我們使用的是一個特殊的類別」self ”; self和$this相似,只不過self是代表這個靜態方法所在的類別。所以在靜態方法裡,可以使用這個方法所在的類別的“類別名稱“,也可以使用“self“來訪問其它靜態成員,如果沒有特殊情況的話,我們通常使用後者,即”self::成員屬性」的方式。 

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn