Давайте вспомним, для кого создаются публичные методы. Они определяют интерфейс класса и создаются для тех, кто будет использовать класс.
А для чего существуют виртуальные методы? Правильно — для настройки поведения класса. То есть для тех, кто будет расширять функциональность класса.
Виртуальные методы служат в основном для декларации внешних интерфейсов классов. А они как раз публичные. А вот непубличные виртуальные методы как правило говорят о использовании наследования реализации, а не наследовании интерфейсов. Что, как правило, есть зло, т.к. пораждает сильную связность.
Виртуальные методы служат в основном для декларации внешних интерфейсов классов. А они как раз публичные. А вот непубличные виртуальные методы как правило говорят о использовании наследования реализации, а не наследовании интерфейсов. Что, как правило, есть зло, т.к. пораждает сильную связность.