Реализация нескольких интерфейсов
Несколько интерфейсов могут содержать одинаковые методы или свойства. При наследовании от таких интерфейсов такие одинаковые методы или свойства сливаются в один:
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) - ошибка компиляции