Подтвердить что ты не робот

Сравнение: методы интерфейса против виртуальных методов против абстрактных методов

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

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

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

4b9b3361

Ответ 1

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

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