首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抽象方法重写抽象方法

抽象方法重写抽象方法
EN

Stack Overflow用户
提问于 2009-11-20 15:58:27
回答 4查看 3.1K关注 0票数 5
代码语言:javascript
复制
public abstract class A
{
    public abstract void Process();
}

public abstract class B : A
{
    public abstract override void Process();
}

public class C : B
{
    public override void Process()
    {
        Console.WriteLine("abc");
    }
}

此代码引发编译错误:“B”未实现继承的抽象成员“A.Process()”。

有没有办法做到这一点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-11-20 16:08:31

只需在类B中完全省略该方法即可。B无论如何都会从A继承它,而且由于B本身是抽象的,所以您不需要再次显式地实现它。

票数 13
EN

Stack Overflow用户

发布于 2009-11-20 16:10:39

适用于我的VS2008;没有错误,没有警告。但是,没有理由在B中有‘覆盖’。这段代码是等效的:

代码语言:javascript
复制
public abstract class A
{
    public abstract void Process();
}

public abstract class B : A
{
}

public class C : B
{
    public override void Process()
    {
        Console.WriteLine("abc");
    }
}
票数 8
EN

Stack Overflow用户

发布于 2009-11-20 16:17:55

孤单一人-

这没有任何意义。首先,这确实编译得很好。其次,您在A中声明的抽象方法被继承(仍然是抽象的)到B中。因此,您不需要在类B中声明Process()。

--马克

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1768977

复制
相关文章

相似问题

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