Разница между виртуальными и абстрактными методами при наследовании в C# заключается в том, что виртуальные методы имеют реализацию, а абстрактные — нет. 35
Виртуальные методы могут содержать код, который обычно представляет собой реализацию по умолчанию. 3 Производные классы могут переопределить такой метод с помощью своей собственной реализации. 13 Виртуальные методы наследуются, то есть переопределять их в производном классе требуется только при необходимости задать отличающиеся действия. 2
Абстрактные методы не предоставляют реализацию. 3 Они только описывают метод, который должен быть реализован в производных классах. 5 Если базовый класс объявляет метод как абстрактный, то он должен быть переопределён в любом неабстрактном классе, который прямо наследует от этого класса. 1 Если производный класс сам является абстрактным, то он наследует абстрактные члены, не реализуя их. 1
Таким образом, с виртуальными методами класс-наследник наследует реализацию, а с абстрактными методами — интерфейс, представленный этими абстрактными методами. 4