![](/img/trans.png)
[英]Why should an abstract class implement an abstract method of an abstract base class?
[英]Should a base class be marked abstract if there are no abstract members?
如果一個類沒有抽象成員,那么它是否可以被標記為抽象? 即使沒有直接實例化的實際理由呢? (除了單元測試)
是的,即使在沒有抽象方法的情況下,明確標記為不應實例化的基類也是合理和有益的。
你想讓那個班級有一個實際的實例嗎? 如果是,那么不要將其標記為摘要。 如果不是,則將其標記為摘要。
簡短回答:是的。
答案很長: abstract
關鍵字將類和/或其成員標記為不直接有用。 為什么這可能因情況而異; 抽象類可能過於基本,無法進行任何實際工作,或者它可能具有為此類中的其他代碼存在而需要存在的抽象成員,但不能在此級別具體定義。 缺點是,通過標記類抽象,您告訴編譯器和其他開發人員不要直接實例化此類,而是繼承它以創建具體有用的實現。 即使類具有所有成員的工作實現,如果您認為必須繼承該類以充分利用該實現,您也可以這樣做。
如果目標是創建一個其他類將擴展的基類,那么將它作為一個抽象類是有意義的。
但是,如果目標是創建某種形式的Utility類 - 一個只有static
成員的類 - 處理它的最好方法是給類一個標記為private
構造函數。 這樣,該類無法實例化,也無法進行子類化。 這發出一個明確的信號,即該類的唯一用途是使用其static
方法。 (這是來自Effective Java的提示,作者Josh Bloch)
是的,我想是這樣。 至少那是我不時做的事情;-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.