Интерфейс может быть потомком другого интерфейса (однако управляемый интерфейс не может быть потомком неуправляемого, и наоборот). В отличие от классов, для которых допустимо лишь единичное наследование, допускается множественное наследование интерфейсов, т.е. интерфейс может иметь несколько непосредственных родителей. Например, интерфейс ICustomer может быть определен как производный от двух более мелких интерфейсов IBasicCustomer и ICustomerlnfo. Заметим, что в описании указанных трех интерфейсов не задается спецификатор открытого доступа. Это потому, что интерфейсы общедоступны по умолчанию.
_gc _interface IBasicCustomer
// сборщик мусора - IBasicCustomer
{
int RegisterCustomer(
String *pFirstName,
String *pLastName,
String *pEmailAddress) ;
void UnregisterCustomer(int id); // идентификатор
void ChangeEmailAddress(int id, String *pEmailAddress) ;
// (int идентификатор, Строка *pEmailAddress) ;
};
_gc _interface ICustomerlnfo
// сборщик мусора - ICustomerlnfo
{
ArrayList *GetCustomer(int id); // идентификатор
};
_gc _interface ICustomer : IBasicCustomer, ICustomerlnfo
// сборщик мусора - ICustomer: IBasicCustomer, ICustomerlnfo
{
};
При таком объявлении интерфейса можно также определить новые методы, как это сделано ниже для интерфейса ICustomer2.
_gc _interface ICustomer2 : IBasicCustomer, ICustomerlnfo
// сборщик мусора - ICustomer2: IBasicCustomer, ICustomerlnfo
{
void NewMethod();
};