Previous: 2.2.13.13. Self argument To the Table of Contents Next: 2.2.14. Open Arrays
2.2.13.13. Self argument Table of Contents 2.2.14. Open Arrays

- 2.2.13.14. -
Table of Contents
2. TMT Pascal Language Description
2.2. Pascal Language Structure
2.2.13. OOP Extensions
2.2.13.14. Interface Type


2.2.13.14. Interface Type


Interfaces are similar to objects, however they can be declared only in the outermost scope of a program or unit, and they do not implement their own methods. Thus the interface methods cannot be declared as virtual or override. An interface type declaration has the following format:
type InterfaceName = interface (AncestorInterface) [ '{GUID}' ]
    memberList
end;
where AncestorInterface and ['{GUID}'] are optional. The MemberList can include only methods. Unlike objects, fields are not allowed in the interface declaration. All members of an interface are always public (viability modifiers are not allowed).
Also interfaces have no constructors or destructors. They cannot be instantiated, except through objects that implement their methods. If no ancestor is specified, the interface is a direct descendant of IUnknown , which is defined in the System unit as follows:
type
  IUnknown = interface
     function QueryInterface (const iid: TIID;
                               var obj):LongInt; stdcall;
     function AddRef: Longint; stdcall;
     function Release: Longint; stdcall;
 end;
To be compatible with Delphi, an interface declaration can specify a globally unique identifier (GUID) which is represented by a string literal enclosed in brackets immediately preceding the member list.

The GUID part of the declaration must have the following format: [' {xxxxxxxx -xxxx -xxxx -xxxx -xxxxxxxxxxxx}'] The TGUID and PGUID types are declared in the System unit as follows:
type
  PGUID = ^TGUID;
  TGUID = packed record 
    D1: Longint;
    D2: Word;
    D3: Word;
    D4: array [0..7] of Byte;
  end;
  TIID = TGUID;
To declare a typed constant of type TGUID, one can use a string literal to specify its value. For example,
const
  IID_IMYINTERFACE: TGUID = '{3C2A92C2-8AE5-43AC-BEB8-1957FA47C30F}';
In function calls, either a GUID or an interface identifier can serve as a value or constant parameter of type TGUID.


Previous: 2.2.13.13. Self argument To the Table of Contents Next: 2.2.14. Open Arrays
2.2.13.13. Self argument Table of Contents 2.2.14. Open Arrays

- 2.2.13.14. -