Реализация нескольких интерфейсов

We use cookies. Read the Privacy and Cookie Policy

Реализация нескольких интерфейсов

Несколько интерфейсов могут содержать одинаковые методы или свойства. При наследовании от таких интерфейсов такие одинаковые методы или свойства сливаются в один:

type

IShape = interface

procedure Draw;

property X: integer read;

property Y: integer read;

end;

IBrush = interface

procedure Draw;

property Size: integer read;

end;

Brush = class(IShape,IBrush)

// метод Draw реализуется единожды

end;

Чтобы решить проблему с одинаковыми именами в интерфейсах, в .NET классы могут реализовывать методы интерфейсов так называемым явным образом, так что вызов метода интерфейса для переменной класса возможен только после явного приведения к типу интерфейса. В PascalABC.NET такие классы определять нельзя, однако, пользоваться такими классами, реализованными в .NET, можно. Например, тип integer явно реализует интерфейс IComparable:

var i: integer := 1;

var res : integer := IComparable(i).CompareTo(2);

// i.CompareTo(2) - ошибка компиляции