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