Метод интерфейса связывается с методом класса по имени. Если имена по каким-то причинам не совпадают, то можно связать методы явно с помощью специальной конструкции языка Delphi.
Например, в классе TTextReader добавлены методы Next и Finished для поддержки интерфейса IStringIterator. Согласитесь, что существование в одном классе методов Next и NextLine вносит путаницу. По названию метода Next не понятно, что для этого метода является следующим элементом. Поэтому уточним название метода в классе TTextReader и воспользуемся явным связыванием методов, чтобы сохранить имя Next в интерфейсе IStringIterator:
type TTextReader = class(TInterfacedObject, ITextReader, IStringIterator) ... function NextItem: string; function IStringIterator.Next := NextItem; // Явное связывание end; |
При работе с объектами класса TTextReader через интерфейс IStringIterator вызов метода Next приводит к вызову метода NextItem:
var Obj: TTextReader; Intf: IStringIterator; begin ... Intf := Obj; Intf.Next; // -> Obj.NextItem; ... end; |
Очевидно, что связываемые методы должны совпадать по сигнатуре (списку параметров и типу возвращаемого значения).