U objektno orijentisanom programiranju, interfejs je opis svih radnji i funkcija koje objekat mora da ima. Na primer, sve što je tipa motorno vozilo, bilo motocikl ili kamion, mora da ima metodu uključi_motor i isključi_motor. Njihove metode ne moraju budu identične, ali moraju da postoje. Na primer, uključivanje motora kod običnih i elektronskih automobila ne radi se na isti način, ali svaki automobil moramo da upalimo kako bi ga koristili.
Stoga je interfejs neka vrsta ugovora. Ako potpišemo ugovor, moramo da ga se pridržavamo.
Sintaksa interfejsa jednostavna je i slična kao kod klase (public interface Iabvgd). Unutar interfejsa nalaze se funkcije koje ima objekat koji nasleđuje taj interfejs. Ne može da ih nema.
Funkcija mora da zna da li i koji interfejs primenjuje. Sintaksa kojom se potpisuje ugovor da tako kažemo razlikuje se od jezika do jezika. Nekada su to dve tačke ili reč Implements ili nešto treće.
Takođe interfejs ne deklariše varijable. Sve imenovane akcije iliti funkcije koje su u njemu navedene moraju da budu javne, ali to ne važi i za njihovu strukturu i način funkcionisanja.
Dobar primer interfejsa bila bi kontrolna tabla aviona preko koje pozivate metode kao što su spuštanje letelice, podizanje, menjanje rute, ubrzavanje itd… Sve radnje koje druga klasa (u našem slučaju, pilot) može da izvrši u odnosu na prvu klasu (avion) definiše interfejs.
Pilot ne mora da zna pozadinsku tehnologiju menjanja rute aviona (kako to tačno funkcioniše ispod haube), već je samo dovoljno da zna da li nešto može da uradi.