在網(wǎng)上見過這道小題,正好寢室的兄弟們在學(xué),借機會整理下!
題目是這樣的:
1.定義一個SigCls.java;
2.SigCls只能存在一個實例;
3.在構(gòu)造器中初始化兩個成員屬性;
4.編寫TestSigCls.java測試;
分析:
如果構(gòu)造一個類,它只能存在一個實例,那它的構(gòu)造函數(shù)一定不能被外部訪問,也就是說它的構(gòu)造函數(shù)應(yīng)該是private的.
如果構(gòu)造函數(shù)是private的,外部不能實例化,那就需要在類內(nèi)部定義一個方法,用來創(chuàng)建這個實例.
既然只能存在一個實例,那么可以把這個唯一的實例定義成靜態(tài)的,這樣靜態(tài)成員只初始化一次.
代碼:
//SigCls.java文件
public class SigCls
{
??? private String name;
??? private int age;//兩個成員屬性
??? private static SigCls inst;//聲明靜態(tài)實例
??? 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());
?}
}
應(yīng)該還有其他的方法,有待研究!
歡迎來訪!^.^!
本BLOG僅用于個人學(xué)習(xí)交流!
目的在于記錄個人成長.
所有文字均屬于個人理解.
如有錯誤,望多多指教!不勝感激!