說說Java中的static

      在java中,static可以修飾方法、變量、類、程序塊,下面將會分析一下各種修飾的作用,對於static變量和程序塊,是在類加載時被加載的,只能初始化一次。

      java中提供兩種動態機制加載類,new一個對象和調用靜態代碼是隱式機制;另外一種是顯示機制,這種機制也包括兩種方式:1,java.lang.Class中的forName();2,java.lang.ClassLoader中的loadClass();對於顯示機制通過forName或loadClass的參數判斷是否在類初始化時加載static變量和程序塊,如此時不加載將會在初始化第一個實例時加載。

1,static修飾方法時,此方法不能被子類重寫,若子類中出現同樣的static方法,則是對父類static方法的隱藏,不是重寫覆蓋(對象級);

      對於static方法的訪問,可通過類名訪問,或者通過創建一個實例進行訪問,但一定要記住對於static方法,是被所有實例共享的;

      通過父類使用子類時,即A a = new B(),A是B的父類;當調用父類實例的static方法時,同時此方法被子類隱藏,即子類與父類中同時存在這個static方法,這時調用的是父類的static方法,而不是子類的static方法;這不同於非static方法的調用,對於非static方法調用的是子類的方法,對於static方法的這種情況,叫做靜態綁定;

      static方法不能引用類中的非static變量,必須通過類的實例進行引用。

2,static修飾類時,此類只能爲內部類。

      非static內部類不可擁有static數據或static內部類。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章