2013-09-23 42 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说“但派生类应该仍然使用它的基类的方法的原始实现”。我认为他不想'虚拟'。 –

相关问题