Skip to main content

Hva er grensesnittarv?

Grensesnittarv er en mekanisme i visse dataspråk der spesifikke funksjoner arves av en klasse, og da må den aktuelle klassen gi implementeringer for disse funksjonene for å være fullført.Grensesnitt eksisterer bare i visse objektorienterte programmeringsspråk.De kan brukes til å etterligne flere arv, mens de faktisk ikke lar en klasse multiplisere arve, fordi det generelt ikke er noen grenser for antall grensesnitt en klasse kan arve fra.I tillegg til uimplementerte metoder, kan grensesnitt også inkludere offentlige konstanter.

I grensesnittarv, anses objektet som arver metodestubber og konstanter anses å være en type grensesnittobjekt.Så hvis en klasse X som er arvet fra et grensesnitt Y, ville enhver forekomst av klasse X også være et eksempel på klassen Y. Dette blir mer komplisert når et klasser i klassens grensesnitt innebærer mer enn ett eget grensesnitt.For hvert ekstra grensesnitt som arves, kan den resulterende klassen legitimt brukes som et eksempel på hver.Hvis en klasse som er arvet fra ti forskjellige grensesnitt, kan objekter i den klassen brukes som et eksempel på elleve forskjellige objekter, inkludert seg selv.

slik kompleks arv er ikke ofte nødvendig.Grensesnittarv brukes for å sikre at en klasse har et spesifikt sett med nødvendig atferd, og denne atferden gjør det mulig å utføre en rekke funksjoner som den ellers ikke kunne gjøre.Et vanlig eksempel på dette er ActionListener -grensesnittet i Java, som krever at en klasse bare implementerer en spesifikk metode.Vellykket implementering av denne metoden lar en bruker kontrollere knapper, menyelementer eller et hvilket som helst annet vinduobjekt i klassen om ønskelig.Grensesnittarv er en relativt enkel måte å legge til kompleks funksjonalitet til en klasse uten å bekymre seg for de fleste kompliserte arvespørsmål.

En av de største fordelene ved å bruke grensesnittarv er at det gjør at spesifikke objekter kan brukes i generisk forstand.Siden en klasse som implementerer et grensesnitt er en forekomst av det grensesnittet, kan det brukes et hvilket som helst sted en forekomst av det grensesnittet er nødvendig.For eksempel, hvis klasse A implementerer klasse C, og klasse B også implementerer klasse C, hvis en metode tar som en parameter en forekomst av klasse C, vil enten en forekomst av klasse A eller en forekomst av klasse B være en akseptabel parameter å bruke.Grensesnitt kan ikke bli instantiert på egen hånd fordi de ikke er komplette, så det ville aldri være et objekt som rent var en forekomst av klasse C som en parameter.