4.通過私有化構造器強化不可實例化的能力
當編寫的工具類只包換靜態方法和靜態域,並且不希望被實例化,因爲實例對它沒有任何意義。可以通過構造私有化構造器來避免類被實例化。
注:
1 企圖將類做成抽象類來強制該類不可被實例化,這是行不通的。該類可以被子類化,並且該子類也可以被實例化。
2 必須使用私有構造器,不能使用顯性構造器或者不包含構造器。(當類不包含顯性構造器時,編譯器會生成缺省的構造器)
3 使用私有化構造器的類不能被子類化。
public class PrivateConstructor {
private static void outpritName(String name){
System.out.println(name);
}
private PrivateConstructor(){
//拋出異常,防止被調用或者實例
throw new AssertionError();
}
public static void main(String[] args) {
//此處會拋出異常,阻止程序繼續進行
PrivateConstructor p = new PrivateConstructor();
p.outpritName("111");
//直接調用靜態方法
PrivateConstructor .outpritName("111");
}
}