生活随笔
收集整理的這篇文章主要介紹了
【Java】6.3 类成员
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一個Java類中只能包括:成員變量、方法、構造器、初始化塊、內部類(包括接口、枚舉)
單例類
單例類:某些時候要為某一個類僅允許創建一個實例(注釋1)
要實現單例類
構造器不能暴露,用private修飾,否則就可以創建多個實例要暴露一個方法,用public修飾,讓這個方法去創建實例。由于程序必須通過該方法來獲取實例,所以在調用該方法之前,肯定沒有實例(這個時候要用過一個判斷實例是否為null),因此只能通過類來調用 ——?該方法必須用static修飾(注釋2)使用靜態field來緩存“已有的實例”,每次在獲取實力之前,先判斷是否能已有“緩存”實例,如果沒有緩存過,就創建 ;否則直接返回“緩存”的實例
class Singleton{//使用一個類變量來緩存曾經創建的實例private static Singleton instance;//隱藏構造器private Singleton() {}//創建一個靜態方法,以便可以讓類來調用,用于返回Singleton實例//該方法可以追加自定義控制,保證只產生一個Singleton對象public static Singleton getInstance() {//如果instance為null,表明不存在instance對象//若果instance不為null,表明已經存在了instance對象,就創建一個instance對象if(instance == null) {instance = new Singleton();}return instance;}}
public class SingletonTest {public static void main(String[] args) {//對于靜態變量,要用靜態類來調用方法來實現//因為沒有構造器,所以也不能newSingleton s1 = Singleton.getInstance();Singleton s2 = Singleton.getInstance();//已知用==來判斷類型時,會判斷是否為用一個對象System.out.println(s1==s2); //會輸出true,所以為同一個對象}
}
【注釋1】頻繁穿件對象、回收對象會帶來系統的開銷問題,導致系統性能下降
【注釋2】因為在調用方法之前還不存在對象,所用用該方法的不可能是對象,只能是類。又因為靜態變量不能訪問非靜態變量,所以,方法必須由static修飾
總結
以上是生活随笔為你收集整理的【Java】6.3 类成员的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。