在抽象类中实现接口

4

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

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?
}

可能是这个的重复问题:http://stackoverflow.com/questions/1395298/c-sharp-abstract-class-implements-interface-bad-coding-practice - FosterZ
谢谢大家的及时回复,但我的问题是如果我实现接口方法并将该方法更改为抽象方法是否可行。public abstract string GetData() - Tanya
你是在问是否可以将一个非抽象方法改为抽象方法吗? - Anthony
你有读完上面帖子的所有答案吗?你的答案就在那个帖子里。 - FosterZ
@FosterZ:我不认为这是重复的,因为:a)那个问题不具有建设性,b)那个问题中给出的示例并没有特别涉及具有抽象成员实现接口的情况,它只是围绕着以任何方式在抽象类上实现接口(无论是否实际可能,并且它没有给出这种情况的示例);而这个问题特别涉及到了这种情况。 - casperOne
1个回答

1

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

在您的情况下,涉及的方法由MyAbstract实现的接口声明,您实际上可以完全放弃GetData并依赖于ITest中此函数的声明。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接