Сравнение: методы интерфейса против виртуальных методов против абстрактных методов - PullRequest
43 голосов
/ 21 января 2011

Каковы преимущества и недостатки каждого из них?

  • методы интерфейса
  • виртуальные методы
  • абстрактные методы

Когда нужно выбирать что? Какие моменты следует учитывать при принятии этого решения?

1 Ответ

47 голосов
/ 21 января 2011

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

Методы интерфейса - это реализации метода, который объявлен в интерфейсе, который реализует класс.Это совершенно не связано с двумя другими.Я думаю, что метод может быть как виртуальным, так и интерфейсным.Преимущество интерфейсов состоит в том, что вы объявляете один интерфейс (duh), который может быть реализован двумя совершенно разными классами.Таким образом, вы можете запускать один и тот же код в двух разных классах, если методы, которые вы хотите вызывать, объявляются в интерфейсе, который они разделяют.

...