首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从非抽象类继承

从非抽象类继承
EN

Stack Overflow用户
提问于 2014-02-25 16:59:05
回答 4查看 1.6K关注 0票数 3

我有几个类继承自一个BaseClass,它有一个名为GetData的抽象方法。在其中一种方法中,我希望再次继承并提供一个名为GetArticles的新方法,这是我从GetData调用的。这是密码。

代码语言:javascript
运行
复制
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本身。

有什么建议吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-25 17:00:52

GetArticlesFirstClass中声明为虚拟。在第二个类中,删除new并添加override

票数 7
EN

Stack Overflow用户

发布于 2014-02-25 17:00:58

您的方法必须在virtual中标记为FirstClass,并在SecondClass中使用override关键字进行覆盖。

代码语言:javascript
运行
复制
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#编程指南)

票数 8
EN

Stack Overflow用户

发布于 2014-02-25 17:00:45

使GetArticles虚拟。

代码语言:javascript
运行
复制
protected virtual void GetArticles()
{
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22021052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档