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