java-面向?qū)ο?基礎(chǔ)篇)--構(gòu)造方法私有化及對象數(shù)組

java-面向?qū)ο?基礎(chǔ)篇)--構(gòu)造方法私有化及對象數(shù)組

ID:20439726

大?。?2.05 KB

頁數(shù):5頁

時間:2018-10-12

java-面向?qū)ο?基礎(chǔ)篇)--構(gòu)造方法私有化及對象數(shù)組_第1頁
java-面向?qū)ο?基礎(chǔ)篇)--構(gòu)造方法私有化及對象數(shù)組_第2頁
java-面向?qū)ο?基礎(chǔ)篇)--構(gòu)造方法私有化及對象數(shù)組_第3頁
java-面向?qū)ο?基礎(chǔ)篇)--構(gòu)造方法私有化及對象數(shù)組_第4頁
java-面向?qū)ο?基礎(chǔ)篇)--構(gòu)造方法私有化及對象數(shù)組_第5頁
資源描述:

《java-面向?qū)ο?基礎(chǔ)篇)--構(gòu)造方法私有化及對象數(shù)組》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學術(shù)論文-天天文庫。

1、構(gòu)造方法私有化及對象數(shù)組一.構(gòu)造方法私有化1.W題的引出類的封裝性不只體現(xiàn)迕對屬性的封裝上,實際上方法也是可以進行封裝的,當然,在方法封裝屮也包括了對構(gòu)造方法的封裝。例:classSingleton{privateSingleton(){}publicvoidprint(){System.out.println("HelloWorld!");}}從之前的講解巾可以清楚的知道,一個類想使用,則必須要有實例化的對象,現(xiàn)在要想調(diào)用Singleton炎中的printO方法則一定要首先產(chǎn)生Singleton的實例化對象,但是由于此時構(gòu)造方法被私有化了,所以如果按照如下的程序編寫,則

2、肯定會出現(xiàn)錯誤?!惧e誤代碼,直接實例化Singleton類對象】publicclassSingletonDemo02{publicstaticvoidmain(String[]args){Singletonsl=null;sl=newSingleton();si.print));}}程序運行的結(jié)果為:SingletonDemo02.java:13:錯誤:Singleton()可以在Singleton中訪問privatesl=newSingleton();1個錯誤從上述錯誤提示屮可以發(fā)現(xiàn),程序是在使川new關(guān)鍵字實例化對象吋出現(xiàn)了錯誤,而對于聲明對象則沒有任何的錯誤,那么該

3、如何解釋那?封裝足指一切外部不可見牲,那么就意味著在外部根木無法調(diào)用被封裝的構(gòu)造方法,既然外部不能調(diào)用,那么在內(nèi)部碼?【在內(nèi)部產(chǎn)生Singleton的對象】classSingleton{staticSingletoninstance=newSingleton();privateSingleton(){}publicvoidprint(){System.out.println("HelloWorld!");}}以上的程序編譯后,不會出現(xiàn)任何錯誤,對以正常的完成instance對象的實例化,即此時的問題在于如何將內(nèi)部的instance對象傳遞到類的外部,這樣外部就可以通過in

4、stance來實例化其他的Singleton的對象。那么對象到底該如何?。?.問題的解決在前面講解static關(guān)鍵字時齊經(jīng)講過,static類型的屬性可以山類名稱直接調(diào)用,所以此吋可以將instance屬性聲明為static笑型,這樣就町以通過笑名稱直接調(diào)川。【將instance聲明為static類型】classSingleton{staticSingletoninstance=newSingleton();privateSingleton(){}publicvoidprint(){System.out.println("HelloWorld!");}}publiccla

5、ssSingletonDemo04{publicstaticvoidmain(String[]args){Singletonsl=null;sl=Singleton.instance;si.print));}}運行結(jié)果為:HelloWorld!山運行結(jié)果可以發(fā)現(xiàn),程序成功地取得了Singleton的實例化對象并調(diào)用了phnt()方法。但是這樣做本身也存在著問題,因為類中的屬性必須封裝,所以此處應(yīng)該將instance屬性進行封裝,而封裝后必須通過方法取得,但是因為instance屈性屈于靜態(tài)屬性,所以此處必須聲明-?個靜態(tài)方法,這樣就可以被類名稱直接調(diào)用?!臼褂渺o態(tài)方法,取

6、得Singleton類的實例】classSingleton{privatestaticSingletoninstance=newSingleton();privateSingleton(){}publicstaticSingletongetlnstance(){returninstance;}publicvoidprint(){System.out.println(nHelloWorld!}}publicclassSingletonDemo05{publicstaticvoidmain(String[]args){Singletonsl=Singleton.getlnst

7、ance();Singletons2=Singleton.getlnstance();Singletons3=Singleton.getlnstance();si.print));s2.print();s3.print));}}運行結(jié)果為:HelloWorld!HelloWorld!HelloWorld!1.租序的意義在以上的程序中可以發(fā)現(xiàn)雖然聲叨了3個對象,但是實際上所有的對象都只使用一個instance引用,也就是說,此時不管外而如何使用,最終結(jié)果程序屮也只柯一個Singleton類的實例化對象存在,在設(shè)計模式中稱為單例模

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。