構造方法私有化作用

2021-09-30 07:26:20 字數 1518 閱讀 5734

現在觀察以下的**:

class demo

public void print()

};

// 要求:例項化demo物件,同時呼叫print方法

public class demo08

};

此時,無法例項化物件,無法例項化物件就無法呼叫print方法。

class demo

public static demo getinstance()

public void print()

};

// 要求:例項化demo物件,同時呼叫print方法

public class demo08

};

分析:

為什麼要將構造方法私有化?

問:如果要限制乙個類物件產生,即:乙個類只能有乙個例項化物件,該怎麼做?

一例項化物件肯定要呼叫構造方法,如果將構造方法藏起來,則外部肯定無法直接呼叫,就肯定不能用new關鍵字呼叫構造方法例項。

要在內部使用。

class demo

public static demo getinstance()

public void print()

};

// 要求:例項化demo物件,同時呼叫print方法

public class demo09

};

所以此設計在系統中稱為單例設計(單態設計),在windows中也有此設計的存在。windows中的**站,所有的盤都共享同乙個**站,這就是乙個典型的單態設計。

如果在繼續深入,單態設計還分為兩種:

· 餓漢式:之前的設計就是餓漢式,因為物件一直存在。

· 懶漢式:在第一次呼叫的時候,才例項化物件,稱為懶漢式

class demo

public static demo getinstance()

return d ;

}

public void print()

};

// 要求:例項化demo物件,同時呼叫print方法

public class demo10

};

多例設計:

在類中會準備出多個物件,之後根據傳入的引數不同,可以返回不同的物件。

class demo

public static demo getinstance(int t)

return d1 ;

}else if(t==2)

return d2 ;

}else

}

public void print()

};

public class demo11

};

Java 構造方法私有化的作用

public class demo08 class demo public void print 此時,無法例項化物件,無法例項化物件就無法呼叫print方法。public class demo08 class demo public static demo getinstance public v...

構造方法私有化

本章目標 了解構造方法私有化的目的 掌握單態設計模式 構造方法私有化 類的封裝性不光體現在對屬性的封裝上,實際上方法也是可以被封裝的,當然,在方法封裝中也包含了對構造方法的封裝。例如 以下的 就是對構造方法進行了封裝。class singleton public void print 程式的意義 單...

私有化建構函式的作用

例如 public class diskutil public static func 這樣的類,往往提供一些靜態的函式來生成該類的例項,只要這個類有公開的屬性 方法,得到例項引用的一方還是可以呼叫的,乙個例子是singleton。外面呼叫只能呼叫diskutil 的靜態函式func,而不能a a ...