Использование интерфейса

Для доступа к объекту через интерфейс нужна интерфейсная переменная:

var
  Intf: ITextReader;

Интерфейсная переменная занимает в оперативной памяти четыре байта, хранит ссылку на интерфейс объекта и автоматически инициализируется значением nil.

Перед использованием интерфейсную переменную инициализируют значением объектной переменной:

var
  Obj: TTextReader;  // объектная переменная
  Intf: ITextReader; // интерфейсная переменная
begin
  ...
  Intf := Obj;
  ...
end;

После инициализации интерфейсную переменную Intf можно использовать для вызова методов объекта Obj:

Intf.Active := True; // -> Obj.SetActive(True);
Intf.NextLine;       // -> Obj.NextLine;

Через интерфейсную переменную доступны только те методы и свойства объекта, которые есть в интерфейсе:

Intf.Free; // Ошибка! У интерфейса ITextReadaer нет метода Free.
Obj.Free;  // Метод Free можно вызвать только так.

 

Яндекс цитирования