2011-01-21 2 views
33

Каковы преимущества и недостатки каждого из них?Сравнение: методы интерфейса против виртуальных методов против абстрактных методов

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

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

+7

@ Downvoter: что случилось с вопросом? Не стоит задавать этот вопрос? – Nawaz

ответ

37

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

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

+4

для получения более подробной информации об этом, см. Http://stackoverflow.com/a/3621600/8151. tl; dr: методы интерфейса объявляются виртуальными в испускаемом ИЛ. – cori

Смежные вопросы