【问题标题】:implement Interface in an abstract class在抽象类中实现接口
【发布时间】:2011-12-02 06:15:15
【问题描述】:

是否可以在抽象类中实现接口,并将实现的接口方法改为抽象类?

interface ITest
{
    string GetData();
    int ProcessData();
}

public abstract class MyAbstract:ITest
{
    public int Process()
    {
        // some code
    }

    public abstract string GetData(); // Change the implemented method into abstract Is it Possible?
}

【问题讨论】:

  • 可能是这个stackoverflow.com/questions/1395298/…的副本
  • 感谢您的即时回复,但我的问题是我是否实现接口方法并将该方法更改为抽象方法是否可行。 public abstract string GetData()
  • 您是在问是否可以将非抽象方法更改为抽象方法?
  • 您是否阅读了上述帖子的所有答案?你的答案在那篇文章中。
  • @FosterZ:我不认为这是一个骗局,因为:a)该问题没有建设性,b)该问题中给出的示例并未具体涉及实现接口的抽象成员,它只涉及在抽象类上实现接口以任何方式(不管它是否真的可能,也没有作为例子给出这种情况);这个问题专门针对这种情况。

标签: c# .net oop


【解决方案1】:

是的,你可以做到。只需添加 abstract 关键字并删除实现。这显然有一个陷阱。任何从抽象类继承的类现在都必须自己实现GetData。根据MyAbstract 的子类有多少,这可能会导致大量工作和代码重复。

在您的情况下,所讨论的方法由MyAbstract 实现的接口声明,您实际上可以完全删除GetData 并依赖ITest 中此函数的声明。

【讨论】:

    猜你喜欢
    • 2012-07-17
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 2020-10-20
    • 2012-09-02
    • 2021-12-11
    • 2014-02-05
    相关资源
    最近更新 更多