Var f:TStringList; //Переменная типа объект TStringList.

begin f:= TStringList.Create(); f.Free;

end;

В этом примере я только создал новый объект и сразу уничтожил, не используя его.

Давай снова вспомним, что TStringList происходит от TStrings. Использовать TStrings напрямую нельзя, потому что это абстрактный объект. Абстрактный объект – объект, который представляет из себя пустой шаблон. Он может даже ничего не уметь делать, а только описывать какой-то вид или шаблон, на основе которого можно выводить полноценные объекты. Вот так TStringList добавляет в TStrings свои функции так, что он становиться полноценным объектом.

Итак, получается, что мы не можешь объявлять переменные типа TStrings и использовать этот объект, потому что это всего лишь шаблон. Это и так и не так. Переменную мы можем объявлять, но использовать сам объект не можем. Зато мы можем объявить переменную типа TStrings, но использовать эту переменную как объект TStringList, потому что он происходит от первого. Это значит, что следующий пример идентичен предыдущему: