

| стрелялки |
| спорт |
| драки |
| стратегии |
| гонки |
| логические |
| азартные |
| аркады |
| эротические |
| фильмы онлайн |
| Реализация интерфейса |
|
Мы ведь только что говорили, что интерфейс не имеет секции реализации, и вдруг такой заголовок. Это не ошибка, но только с тем условием, что определенные в интерфейсе методы реализуются во внешнем классе VCL. Синтаксис реализации интерфейса следующий: type Имя_класса = class (Класс_предок, Интерфейс_1, ..., Интерфейс_И) {коллекция методов} end; Допустим, что мы описываем какой-то интерфейс IMyInterface, в обязанности которого входит вызов метода MyFunction(): type IMyInterface = interface [¦{8F34D05D-C7AD-4F4C-8860-5AFC498A5FFC}'] function MyFunction : double; end; Для того чтобы определенный в интерфейсе метод приобрел смысловую нагрузку, IMyInterface нуждается в союзнике: type TMyObject = class(TInterfacedObject,IMyInterface) function MyFunction : double; end; implementation function TMyObject.MyFunction : double; begin Result:=Random; end; Класс TMyObject обязан реализовать все определенные в интерфейсе методы. Для этого он декларирует и описывает свои собственные методы, названия, параметры и возвращаемые результаты которых должны точно совпадать с объявленными у интерфейса методами. Во время компиляции программы компилятор осуществит поиск совпадающих сигнатур методов класса и интерфейса и свяжет функции интерфейса с функциями класса. |
