2013-09-23 89 views
7

我有以下類與一些方法,我想用這個作爲另一個類的基類。什麼是正確的修飾符?

public class BaseClass 
{ 
    public string DoWork(string str) 
    { 
     // some codes... 
    } 

    // other methods... 
} 

我不希望這個類被實例化,但派生類應該還是用原來的執行其基類的方法。

可能嗎?我的修改器應該是什麼?

+5

你需要'abstract'。 –

+0

但抽象不包含任何實施權? – yonan2236

+0

@ yonan2236沒有。抽象類可以包含具體的方法和屬性。否則,他們不會與界面有所不同(除了聲明非公開成員) –

回答

6

既然你不想讓這個類被實例化,使它成爲一個abstract類。你仍然可以在課堂上實施。

片斷,

public abstract class BaseClass 
{ 
    public virtual string DoWork(string str) 
    { 
     // can have implementation here 
     // and classes that inherits can overide this method because of virtual. 
    } 

    // other methods... 
} 
+1

爲什麼該方法是虛擬的? – yonan2236

+0

@ yonan2236所以該方法可以被覆蓋。 –

+0

哦,那麼這意味着派生類可以有自己的'DoWork'方法實現嗎?對? – yonan2236

7

BaseClassabstract

public abstract class BaseClass 
{ 
    // Only available to BaseClass 
    private string _myString; 

    public string DoWork(string str) 
    { 
     // Available to everyone 
     return _myString; 
    } 

    protected void DoWorkInternal() { 
     // Only available to classes who inherit base class 
    } 
} 

這樣,您就可以在BaseClass定義自己的代碼 - 但它不能被初始化直接地,它必須被繼承。

+0

'DoWork'應該被標記爲'virtual'。 –

+2

@史密斯先生我不確定。 OP說「但派生類應該仍然使用它的基類的方法的原始實現」。我認爲他不想'虛擬'。 –

相關問題