為什麼要讓工具類不能被例項化

2021-09-24 12:57:39 字數 689 閱讀 7697

首先我們要知道,工具類是可以例項化的,只是沒有必要去例項化。

定義:工具類是為了提供一些通用類的某一非業務領域內的公共方法,不需要配套的成員變數,僅僅是作為工具方法被使用。所以將它做成靜態方法最合適,不需要例項化,能夠獲取到方法的定義並呼叫就行。

不例項化的原因:如果要例項化乙個工具類,就需要一定的記憶體空間,工具類提供的是靜態方法,通過類就能呼叫,所以不必浪費記憶體去例項化工具類物件。

那麼如何讓工具類不能被例項化呢?

讓乙個工具類不能被例項化的方法:使用私有構造器

public

class

a}

由此想到讓乙個類不能被例項化應該怎麼做?

:使用私有構造器,在構造器中新增限制;

分析:在使用私有構造器的基礎下,再在構造方法中返回乙個異常,因為雖然外部類無法例項化該類,但是內部類可以例項化該類。

如果只是通過私有化構造器,那麼通過反射的方式,還是可以例項化該類。

必須在私有構造器中新增乙個異常,這樣,當執行構造方法的時候,就會丟擲異常,從而停止例項化。

具體實現參考:

抽象類為什麼不能例項化(new)

抽象類為什麼不能例項化 new 答案是 規定。第一點 回歸問題最初,我們為什麼要例項化?我們先逆向思維來考慮,從物件導向的思想來看 我們需要完成實現乙個功能,而功能中的方法,是由物件來呼叫的,因此我們需要物件,因此我們需要例項化。那麼回歸本問題,什麼是抽象類?抽象 就是不具體的意思。類是對物件的具體...

AO中為什麼不能直接用類來例項化?

在ao開發中,經常會遇到類似的宣告 ibasicmap pmap new mapclass 於是就會產生這種疑問,為什麼不這樣宣告呢?mapclass pmap new mapclass 如果這樣宣告,將會編譯錯誤,不能通過類的全權名進行方法的呼叫,只能用介面例項來訪問。這是因為class 如上例中...

可以例項化物件,但是不能被繼承的類

很容易想到的實現方式是將類的建構函式設為私有的。即class a 則類a不能被繼承 繼承後不能例項化物件,那繼承後的類還有什麼意義?上面的實現方式使得類a也不能例項化乙個物件,即a a 不能通過編譯。那麼怎麼讓乙個類除了不能例項化物件外,其他操作都一樣呢?先來看下面的例子,class a class...