Interface (arayüz) türü, arayüzü uygulayan herhangi bir sınıf ile nasıl etkileşime girileceğine yönelik bir sözleşme sağlar. Bir arayüzün örneği oluşturulamaz ancak bir sınıf, arayüzden devralabilir ve onun yöntemlerini uygulayabilir. Arayüz, tanım kapsamında kısmi uygulamaya veya alanlara izin vermemesi dışında bir soyut sınıfa benzer.
Örneğin, bisiklet veya at gibi üzerine binebileceğin herhangi bir şey için bir arayüz oluşturalım:
rideable := interface():
Mount()<decides> : void
Dismount()<decides> : void
Arayüzü devralan herhangi bir sınıf, arayüzün işlevlerini uygulamalı ve geçersiz kılma belirleyicisi eklemelidir:
bicycle := class(rideable):
...
Mount<override>()<decides> : void =
...
Dismount<override>()<decides> : void =
...
horse := class(rideable):
...
Mount<override>()<decides> : void =
Bir arayüz, başka bir arayüze genişleyebilir. Örneğin, üzerine binebileceğin her şeyin aynı zamanda hareket etmesi gerektiğini belirtebilirsin.
moveable := interface():
MoveForward() : void
rideable := interface(moveable):
Mount()<decides> : void
Dismount()<decides> : void
Bir sınıf, bir arayüzden veya başka bir sınıftan devralabilir. Örneğin, bir at tanımlayabilir ve bunu, üzerine binebileceğin bir eyeri olan attan farklılaştırabilirsin.
horse := class(moveable):
...
MoveForward()<decides> : void =
...
saddle_horse := class(horse, rideable):
...
Mount<override>()<decides> : void =
...
Dismount<override>()<decides> : void =
Bir sınıf birden fazla arayüzden devralabilir.
lockable := interface():
Lock() : void =
...
Unlock() : void =
...
bicycle := class(rideable, lockable):
…
Mount<override>()<decides> : void =
...