Liittymät (interface) kuvailevat luokkien tai tietueiden toiminnallisuuden eli määrittelevät mitä metodeita, ominaisuuksia, indeksereitä ja tapahtumia niillä tulee olla. Liittymät eivät tarjoa toteutusta mainituille jäsenille vaan se jää luokan tai tietueen tehtäväksi. Liittymät määritellään interface-avainsanalla.
Liittymän toteuttaminen tapahtuu kuten periytyminen
public class EmailVirheenTallentaja : IVirheenTallentaja
{
// toteuttaa liittymän metodin
public void TallennaVirheenTiedot(string viesti)
{
// lähetä virhe sähköpostiin
}
}
Jos luokka periytyy toisesta luokasta ja toteuttaa liittymän, tulee ensin merkitä perittävä luokka ja sen perään toteutettavat liittymät
// luokka, joka periytyy luokasta OmaLuokka ja toteuttaa liittymat ILiittyma1 ja ILiittyma2
public class JokuLuokka : OmaLuokka, ILiittyma1, ILiittyma2
{
}
Liittymän ja abstraktin luokan eroja
Abstraktit luokat ja jäsenet (abstrakteine jäsenineen) voi myös pakottaa luokalla olemaan tiettyjä jäseniä. Liittymillä ja abstrakteilla luokilla on kuitenkin joitain eroavaisuuksia, joita vertaillen pitäisi löytää niistä sopivampi vaihtoehto.
Liittymä
Abstrakti luokka
Periytyminen
Luokka voi toteuttaa useita liittymiä
Luokka voi periytyä (suoraan) vain yhdestä luokasta
Suojausmääreet
Kaikki liittymän jäsenet ovat julkisia (public)
Jäsenille voi antaa suojausmääreet
Jäsenien toteutus
Jäsenille ei voi antaa toteutusta
Jäsenille voi antaa toteutuksen ja periytyvä luokka voi ylikirjoittaa sen tarvittaessa
Jäsenien lisääminen
Lisätyt jäsenet pitää lisätä jokaiseen toteuttavaan luokkaan
Jäsenelle voi tehdä oletustoteutuksen, jolloin periviä luokkia ei tarvitse muokata