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

2021-07-02 21:46:21 字數 413 閱讀 5911

有時候,我們需要建立一些工具類,只包含靜態方法和靜態域,不希望被例項化,因為例項對它沒有任何的意義。

有一種情況,我們可以將類做成抽象類來強制該類不可被例項化,但這是行不通的,因為該類可以被子類化,並且子類可以例項化。

在缺少顯示構造器的情況下,編譯器會自動提供乙個公有的,無參的預設構造器,由於當子類不包含顯示的構造器時,編譯器才會生成預設的構造器,因此我們可以讓這個類私有的顯示的構造器它就不能被例項化了:

public

class utilityclass

}

由於顯示的構造器是私有的,所以不能夠在類的外部訪問它。為了防止在本類的內部呼叫私有構造器,第一,可以丟擲assertionerror異常,第二,我們可以新增一行注釋,明確該類不能夠被例項化。

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

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

通過私有建構函式強化不可例項化的能力

通過私有化建構函式強化不可例項化的能力 企圖通過將乙個類做成抽象類來強制該類不可被例項化,這是行不通的。有簡單的習慣用法可以確保乙個類不可被例項化。由於只有乙個類不包含顯示的建構函式的時候,編譯器才會生成預設的建構函式,所以我們只要讓這個類包含單個顯示的私有建構函式,則它就不可被例項化了。因為顯示建...

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

有時候可能只需要編寫包含靜態方法和靜態域的類。這些類的名聲很不好,因為有些人再物件導向的語言中濫用這些類來編寫過程化的程式。儘管如此,他們也確實有他們特有的用處。我們可以利用這種類,把基本型別的值或者陣列型別上的相關方法組織起來,也可以把實現特定介面上的靜態方法組織起來,還可以利用這種類把final...