Posted on 2006-10-06 13:46
久城 閱讀(849)
評論(2) 編輯 收藏 所屬分類:
JavaTest
在網上見過這道小題,正好寢室的兄弟們在學,借機會整理下!
題目是這樣的:
1.定義一個SigCls.java;
2.SigCls只能存在一個實例;
3.在構造器中初始化兩個成員屬性;
4.編寫TestSigCls.java測試;
分析:
如果構造一個類,它只能存在一個實例,那它的構造函數一定不能被外部訪問,也就是說它的構造函數應該是private的.
如果構造函數是private的,外部不能實例化,那就需要在類內部定義一個方法,用來創建這個實例.
既然只能存在一個實例,那么可以把這個唯一的實例定義成靜態的,這樣靜態成員只初始化一次.
代碼:
//SigCls.java文件
public class SigCls
{
??? private String name;
??? private int age;//兩個成員屬性
??? private static SigCls inst;//聲明靜態實例
??? private SigCls(String aName, int aAge) {
??????? name = aName;
??????? age = aAge;//初始化兩個成員屬性
??? }
??? public String getName() {
??????? return name;
??? }
??? public int getAge() {
??????? return age;
??? }
??? public static SigCls getInstance() {
??????? if (inst == null)
??????? {
??????????? System.out.println("none");
??????????? inst = new SigCls("xiaozhang", 19);//初始化實例
??????????? return inst;
??????? }
??????? else
??????? {
??????????? System.out.println("Sig");
??????????? return inst;
??????? }
??? }
}
//TestSigCls.java文件
public class TestSigCls
{
?public static void main(String[] args)
?{
???????? SigCls sc1;
??????? ?SigCls sc2;
??????? ?sc1 = SigCls.getInstance();
???????
?????? ??sc2 = SigCls.getInstance();
??????? ?System.out.println(sc1.getName());
??????? ?System.out.println(sc2.getName());
?}
}
應該還有其他的方法,有待研究!
歡迎來訪!^.^!
本BLOG僅用于個人學習交流!
目的在于記錄個人成長.
所有文字均屬于個人理解.
如有錯誤,望多多指教!不勝感激!