Interface Types

Interfaces, like classes, can be declared only in the outermost scope of a program or unit, not in a procedure or function declaration. An interface type declaration has the form type interfaceName = interface (ancestorInterface) ['{GUID}'] memberList end;

where (ancestorInterface) and ['{GUID}']are optional. In most respects, interface declarations resemble class declarations, but the following restrictions apply.

  • The memberList can include only methods and properties. Fields are not allowed in interfaces.
  • Since an interface has no fields, property read and write specifiers must be methods.
  • All members of an interface are public. Visibility specifiers and storage specifiers are not allowed. (But an array property can be declared as default.)
  • Interfaces have no constructors or destructors. They cannot be instantiated, except through classes that implement their methods.
  • Methods cannot be declared as virtual, dynamic, abstract, or override. Since interfaces do not implement their own methods, these designations have no meaning.

Here is an example of an interface declaration:

type

IMalloc = interface(IInterface)

['{00000002-0000-0000-C000-000000000046}']

function Alloc(Size: Integer): Pointer; stdcall;

function Realloc(P: Pointer; Size: Integer): Pointer; stdcall;

procedure Free(P: Pointer); stdcall;

function GetSize(P: Pointer): Integer; stdcall;

function DidAlloc(P: Pointer): Integer; stdcall; procedure HeapMinimize; stdcall;

end;

In some interface declarations, the interface reserved word is replaced by dispinterface. This construction (along with the dispid, read only, and write only directives) is platform-specific and is not used in Linux programming.

Project Management Made Easy

Project Management Made Easy

What you need to know about… Project Management Made Easy! Project management consists of more than just a large building project and can encompass small projects as well. No matter what the size of your project, you need to have some sort of project management. How you manage your project has everything to do with its outcome.

Get My Free Ebook


Post a comment