реализовать интерфейс в абстрактном классе - PullRequest
4 голосов
/ 02 декабря 2011

Можно ли реализовать интерфейс в абстрактном классе и изменить реализованный метод интерфейса на абстрактный?

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

1 Ответ

1 голос
/ 02 декабря 2011

Да, вы можете сделать это. Просто добавьте ключевое слово abstract и удалите реализацию. С этим очевидно есть подводный камень. Любой класс, который наследуется от вашего абстрактного класса, теперь должен будет реализовать GetData сами. В зависимости от того, сколько классов являются потомками MyAbstract, это может привести к большой работе и дублированию кода.

В вашем случае, когда рассматриваемый метод объявляется интерфейсом, который реализует MyAbstract, вы можете просто полностью удалить GetData и положиться на объявление этой функции в ITest.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...