Interfaces can be implemented by classes to provide functionality with a common interface. Each class can implement multiple interface and interfaces can require other interfaces to be implemented.
public interface InterfaceName : RequiredInterface <optional>
{
<interface members>
}
Interfaces can contain abstract and non abstract methods.
public abstract void MethodName ();
public void MethodName2 ()
{
<Implementation>
}
Interfaces can also contain delegates
public delegate void DelegateName (void* data);
Signals are also supported by interfaces
public signal void SignalName ();