Разница между абстрактными и виртуальными методами в программировании заключается в их реализации и месте объявления: stackoverflow.com
- Абстрактный метод может быть объявлен только внутри абстрактного класса. stackoverflow.com Он содержит только объявление метода, а не реализацию. stackoverflow.com Классы, производные от абстрактного класса, должны предоставлять реализацию для этого метода. ru.wikipedia.org stackoverflow.com
- Виртуальный метод может быть объявлен как внутри абстрактного, так и неабстрактного класса. stackoverflow.com Он содержит реализацию метода. stackoverflow.com Виртуальный метод можно переопределить и предоставить дополнительную логику или заменить её своей собственной реализацией. stackoverflow.com
Таким образом, абстрактный метод заставляет потомков предоставлять реализацию, а виртуальный метод позволяет разрешать потомкам изменять поведение метода, имея его реализацию по умолчанию. stackoverflow.com