我有几个类继承自一个BaseClass,它有一个名为GetData的抽象方法。在其中一种方法中,我希望再次继承并提供一个名为GetArticles的新方法,这是我从GetData调用的。这是密码。
public abstract class BaseClass
{
internal abstract void GetData();
}
internal class FirstClass : BaseClass
{
internal override void GetData()
{
// calls GetArticles
}
protected void GetArticles()
{
}
}
internal class SecondClass : FirstClass
{
protected new void GetArticles()
{
}
}GetArticles从未在SecondClass中被调用。它调用FirstClass中的对象,即使我的对象是SecondClass类型的。我不能在GetArticles中使用FirstClass Abstract,因为我想使用FirstClass本身。
有什么建议吗?
发布于 2014-02-25 17:00:52
将GetArticles在FirstClass中声明为虚拟。在第二个类中,删除new并添加override
发布于 2014-02-25 17:00:58
您的方法必须在virtual中标记为FirstClass,并在SecondClass中使用override关键字进行覆盖。
internal class FirstClass : BaseClass
{
internal override void GetData()
{
// calls GetArticles
}
protected virtual void GetArticles()
{
}
}
internal class SecondClass : FirstClass
{
protected override void GetArticles()
{
}
}new修饰符隐藏底层的虚拟方法,这不是您想要的。检查MSDN上的知道何时使用覆盖和新关键字(C#编程指南)。
发布于 2014-02-25 17:00:45
使GetArticles虚拟。
protected virtual void GetArticles()
{
}https://stackoverflow.com/questions/22021052
复制相似问题