Для доступа к объекту через интерфейс нужна интерфейсная переменная:
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 можно вызвать только так. |