在Java中類的靜態變量/靜態方法又稱之爲類變量 /類方法,它們存在於內存棧中,只有一份,能夠經過類和對象直接訪問php
public class MyStatic { public static String className = "MyStatic"; public static void getClassName() { //固然你直接寫className也能訪問到,但前提是此函數裏沒有局部變量名覆蓋靜態變量名 System.out.println(MyStatic.className); } public static void main(String[] args) { //類訪問靜態變量 System.out.println(MyStatic.className); //對象訪問靜態變量 System.out.println((new Mystatic()).className); //類訪問靜態方法 Mystatic.getClassName(); //對象訪問靜態方法 (new Mystatic()).getClassName(); //========= (new Mystatic()).className = "new class name"; //========= //類訪問靜態變量 System.out.println(MyStatic.className); //對象訪問靜態變量 System.out.println((new Mystatic()).className); //類訪問靜態方法 Mystatic.getClassName(); //對象訪問靜態方法 (new Mystatic()).getClassName(); } }
注意喲,java的靜態變量並不由止對象的訪問,但PHP不一樣,PHP的靜態方法是能夠被對象調用,但類的靜態變量只能被類的方法去訪問,對象是不能直接訪問的java
class Mystatic { public static $className = __CLASS__; public static function getClassName() { echo self::$className; } } echo Mystatic::$className; Mystatic::getClassName(); //but (new Mystatic())->className;//error 沒有權限 //but 下面是能夠的 (new Mystatic())->getClassName(); //靜態的只有一份,你們一塊兒硬鏈接,同步修改 Mystatic::$className = "new class Name"; (new Mystatic())->getClassName();
因此PHP的對象若是要訪問類的靜態變量必須依靠接口,在類中寫出訪問靜態變量的方法,而不能像Java同樣直接使用.語法類和對象皆可訪問函數
Java:spa
靜態屬性類和對象皆可訪問code
靜態方法類和對象皆可訪問對象
PHP:接口
靜態屬性類可訪問,對象需經過接口訪問內存
靜態方法類可訪問,對象也能夠調用訪問get
但靜態方法不可訪問成員變量,只能訪問靜態屬性!!!!!!同步