你可能需要編寫只包含靜態方法和靜態域的類。
這樣的工具類不希望被例項化,例項化對他沒有任何意義。
(企圖通過將類做成抽象類來強制該類不可被例項化,這是行不通的)
工具類(util)就是一類不該被例項化類的代表。它們只是提供一些實用功能,例項化之是毫無意義的。
demo:
// noninstantiable utility class
public
class
utilityclass
}
這種慣用法的***:
它使得乙個類不能被子類化。所有的構造器都必須顯示或隱式的呼叫超類構造器。在這種情形下子類就沒有可訪問的超類構造器可呼叫了。
通過私有構造器強化不可例項化的能力
有時候,我們需要建立一些工具類,只包含靜態方法和靜態域,不希望被例項化,因為例項對它沒有任何的意義。有一種情況,我們可以將類做成抽象類來強制該類不可被例項化,但這是行不通的,因為該類可以被子類化,並且子類可以例項化。在缺少顯示構造器的情況下,編譯器會自動提供乙個公有的,無參的預設構造器,由於當子類不...
通過私有建構函式強化不可例項化的能力
通過私有化建構函式強化不可例項化的能力 企圖通過將乙個類做成抽象類來強制該類不可被例項化,這是行不通的。有簡單的習慣用法可以確保乙個類不可被例項化。由於只有乙個類不包含顯示的建構函式的時候,編譯器才會生成預設的建構函式,所以我們只要讓這個類包含單個顯示的私有建構函式,則它就不可被例項化了。因為顯示建...
第4條 通過私有構造器強化不可例項化的能力
有時候可能只需要編寫包含靜態方法和靜態域的類。這些類的名聲很不好,因為有些人再物件導向的語言中濫用這些類來編寫過程化的程式。儘管如此,他們也確實有他們特有的用處。我們可以利用這種類,把基本型別的值或者陣列型別上的相關方法組織起來,也可以把實現特定介面上的靜態方法組織起來,還可以利用這種類把final...