type
IPrintable = interface
procedure Print;
end;
//interfaces cannot be instantiated:
//a class implements them
TDocument = class(TInterfacedObject,
IPrintable)
public
procedure Print;
end;
procedure TDocument.Print;
begin
WriteLn('printing');
end;
var
Printable: IPrintable;
begin
//Printable := IPrintable.Create; <- Error
Printable := TDocument.Create;
Printable.Print;
end.