私有構造器,就是用private關鍵字聲明的構造器。與一般公有構造器最大的區別在於,其訪問權限是private,於是它只能被包含它的類自身所訪問,而無法在類的外部調用,故而可以阻止對象的生成。所以,如果一個類只有一個私有構造器,而沒有任何公有構造器,是無法生成任何對象的。
那么無法生成對象的帶有私有構造器的類究竟有什么作用呢?這樣的類在實際應用中最常用的是作為工具類,如字符串的驗證、枚舉轉換之類的,通常只做成靜態接口被外部調用即可。這里先插入一點關於靜態方法的說明。靜態方法是用static關鍵字聲明的方法,可以用類來直接調用而無需用從類中實例化出來的具體對象來調用,因此這樣的方法也被稱為類方法。static方法只能訪問類中的static字段和其他的static方法,這是因為非static成員必須通過對象的引用來訪問。舉一個例子:
public class A{
private A(){} ///私有構造類,阻止實例的生成
public static bool validataString(String str);
}
那么在外部使用的時候,只需要通過類名,而不是對象實例來調用validataString方法,如A.validataString(str);可以直接調用此方法。阻止生成對象可以防止不可預期的結果。