Un tipo interface es un abstract tagged type. Su utilidad radica en servir de base para la definición de una interfaz a la que pueden adherirse diferentes tipos a través de un mecanismo de herencia múltiple.
interface_type_definition ::= [limited | task | protected | synchronized] interface [and interface_list] interface_list ::= interface_subtype_mark {and interface_subtype_mark}
package Ejemplo is type Contenedor is limited interface; procedure Insertar (C : in out Contenedor; E : Integer) is abstract; end Ejemplo;
package Ejemplo.Extendido is type Cola is new Contenedor with private; procedure Insertar (C : in out Cola; E : Integer); private ... end Ejemplo.Extendido;