Java學習第七天
阿新 • • 發佈:2019-01-25
類成員(static成員):
當使用例項來訪問類成員時,系統底層依然是委託該類來訪問類成員。因此,即便該類例項為null,她依然可以訪問所屬類的類成員。
例如:
package lesson5; class L5 { public static void main(String[] args) { Person p = new Person(); System.out.println(p.eyenum); System.out.println(p.age); p = null; System.out.println(p.eyenum);//靜態成員,即便p=null,仍然可以訪問。因為實際是通過類訪問的。 //System.out.println(p.age);//出錯。因為age為例項成員,此時因為為null,無法通過引用訪問到物件了。 } } class Person { static int eyenum = 2 ;//類屬性static int age = 100;//例項成員 }
單例模式(Singleton),主要通過靜態變數、靜態方法和private構造方法完成。例如:
package lesson5; class L5 extends Person { public static void main(String[] args) { Singleton st1 =Singleton.getInstance(); Singleton st2 = Singleton.getInstance(); System.out.println(st1==st2);//結果為true,因為st1,st2指向單個唯一的例項物件 } public void test()//不能覆寫父類test()方法,否則出錯。因為父類test()為final { } private final void test(String str)//由於為private,因此即便子類出現具有重寫特徵的方法,也不是重寫,只是子類的一個新方法。 { //程式碼不會報錯。因為此時test(String str)其實是一個新的方法,與父類的相同簽名的方法無關。 } } class Singleton { private static Singleton instance = null;//該靜態變數用於快取例項 private Singleton()//把構造方法隱藏起來,外部無法繼承和例項化該類 { } //暴露給外部使用,以便產生唯一一個該類例項 public static Singleton getInstance() { if(instance==null) { //快取該類例項 instance = new Singleton(); } return instance; } } //測試 class Person { final void test()//不能被覆寫,因為為final { } private final void test(String str)//由於為private,因此即便子類出現具有重寫特徵的方法,也不是重寫,只是子類的一個新方法。 { } }