04 使用私有構造器執行非例項化

2022-03-15 15:57:34 字數 733 閱讀 9845

前言

是什麼

非例項化:不用例項化的類。(例項化沒有任何意義,此時這個類我們希望它是非例項化的)

**用

編寫乙個工具類的時候。對於工具類,例項化對它們來說是沒有任何意義的,然而乙個類我們都知道,在沒有宣告構造方法的時候,編譯器會預設提供乙個公共的、無參的構造器。

怎麼實現

/**

* 不用例項化的工具類

* * @author gongguowei

* @email [email protected]

* @date 2020/1/11 */

public

class

utilityclass

}

可以看到,我們自己宣告了乙個構造器(顯式構造器),編譯器不會預設乙個無參的構造器,顯式構造器是私有的,所以不可以在類的外部訪問它。

總結

使用私有構造器執行非例項化,其實主要用在工具類,不用例項化,工具類就可以向呼叫者提供服務。例項化的過程其實本質是向記憶體中申請乙個空間,我們對於不用例項化的類,避免它使用編譯器預設的例項方法,這樣節約了記憶體,也避免了非例項化類的預設建構函式不穩定性。不過這種寫法,也有一種缺點,讓呼叫者檢視時,會感覺構造器就是設計成不能呼叫的一樣,因此新增一句注釋,會是一種明智的選擇。

04 使用私有構造器執行非例項化

前言 是什麼非例項化 不用例項化的類。例項化沒有任何意義,此時這個類我們希望它是非例項化的 用編寫乙個工具類的時候。對於工具類,例項化對它們來說是沒有任何意義的,然而乙個類我們都知道,在沒有宣告構造方法的時候,編譯器會預設提供乙個公共的 無參的構造器。怎麼實現 不用例項化的工具類 author go...

通過私有構造器強化不可例項化的能力

有時候,我們需要建立一些工具類,只包含靜態方法和靜態域,不希望被例項化,因為例項對它沒有任何的意義。有一種情況,我們可以將類做成抽象類來強制該類不可被例項化,但這是行不通的,因為該類可以被子類化,並且子類可以例項化。在缺少顯示構造器的情況下,編譯器會自動提供乙個公有的,無參的預設構造器,由於當子類不...

通過私有構造器強化不可例項化的能力

你可能需要編寫只包含靜態方法和靜態域的類。這樣的工具類不希望被例項化,例項化對他沒有任何意義。企圖通過將類做成抽象類來強制該類不可被例項化,這是行不通的 工具類 util 就是一類不該被例項化類的代表。它們只是提供一些實用功能,例項化之是毫無意義的。demo noninstantiable util...