А вот относительно первого - можно поспорить.
Спорить бессмысленно - RTFM по слову virtual. Там ясно прописано назначение virtual. (раздел справки "Virtual and dynamic methods")
Если метод базового класса невиртуальный - его всё равно можно вызвать
Да, но это не пример мастерства и хорошего стиля, а вынужденная мера, на которую идут из-за ошибок, допущенных на стадии проектирования объектных сущностей.
Термин "Позднее связывание" к данной области вообще никакого отношения не имеет! Не путайте начинающих!
За дополнение по поводу абстрактных методов спасибо. Абстрактные методы применяются в рамках объектно-оринтированного проектирования для создания АБСТРАКТНЫХ КЛАССОВ. (Абстрактные классы и интерфейсы это совершенно разные вещи!) Абстрактный класс - это наиболее общая реализация объектной сущности. Она описывает общие принципы функционирования классов, порождаемых от данного. Экземплярами (инстансами) абстрактных классов никогда не пользуются (за очень редким исключением, но это примеры плохого стиля). Так например, если в программе присутствует вызов конструктора абстрактного класса, то компилятор обязательно выдает об этом предупреждение.
Пример абстрактного класса является TStrings - методы Clear, Delete, и т.п. в нем абстрактные.
Поэтому при
Var S:TStrings;
Создание экземпляра S:=TStrings.Create - это ошибка,
а S:=TStringList.Create - нет.
Вывод - использование абстрактных классов - это расширенная возможность полиморфизма. То что Вы назвали поздним связыванием - это ПОЛИМОРФИЗМ.
Конечно, из абстрактных классов в последствии (когда на почве ООП выросло дерево под названием COM) выросли ИНТЕРФЕЙСЫ, которые ВООБЩЕ ИЗОЛИРОВАНЫ И ОТ КОНКРЕТНЫХ, И ОТ АБСТРАКТНЫХ РЕАЛИЗАЦИЙ МЕТОДОВ И СВОЙСТВ.
К иходному вопросу все это имеет отношение лишь в том смысле, что все абстрактные методы должны быть переопределены в классах-потомках с помошью virtual, а пользоваться абстрактными классами нужно для того, чтобы иметь возможность, используя полиморфизм, программировать действия определяемые над всеми экземплярами потомков данного класса по наиболее общим правилам. Т.е. иметь возможность применить некую процедуру не к экземплярам данного абстрактного класса (этих экземпляров попросту НЕ БЫВАЕТ), а экземплярам его потомков.