我有以下类与一些方法,我想用这个作为另一个类的基类。什么是正确的修饰符?
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没有。抽象类可以包含具体的方法和属性。否则,他们不会与界面有所不同(除了声明非公开成员) –