我有以下類與一些方法,我想用這個作爲另一個類的基類。什麼是正確的修飾符?
public class BaseClass
{
public string DoWork(string str)
{
// some codes...
}
// other methods...
}
我不希望這個類被實例化,但派生類應該還是用原來的執行其基類的方法。
可能嗎?我的修改器應該是什麼?
我有以下類與一些方法,我想用這個作爲另一個類的基類。什麼是正確的修飾符?
public class BaseClass
{
public string DoWork(string str)
{
// some codes...
}
// other methods...
}
我不希望這個類被實例化,但派生類應該還是用原來的執行其基類的方法。
可能嗎?我的修改器應該是什麼?
既然你不想讓這個類被實例化,使它成爲一個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...
}
讓BaseClass
abstract:
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
定義自己的代碼 - 但它不能被初始化直接地,它必須被繼承。
'DoWork'應該被標記爲'virtual'。 –
@史密斯先生我不確定。 OP說「但派生類應該仍然使用它的基類的方法的原始實現」。我認爲他不想'虛擬'。 –
你需要'abstract'。 –
但抽象不包含任何實施權? – yonan2236
@ yonan2236沒有。抽象類可以包含具體的方法和屬性。否則,他們不會與界面有所不同(除了聲明非公開成員) –