Skip to main content

Hvad er grænsefladearv?

Interfacearv er en mekanisme på visse computersprog, hvor specifikke funktioner er arvet af en klasse, og derefter skal den bestemte klasse give implementeringer for disse funktioner for at være komplette.Grænseflader findes kun på visse objektorienterede programmeringssprog.De kan bruges til at efterligne flere arv, mens de faktisk ikke tillader en klasse at multiplicere arve, fordi der generelt ikke er nogen grænser for antallet af grænseflader, som en klasse kan arve fra.Ud over uimplementerede metoder kan grænseflader også omfatte offentlige konstanter.

I grænsefladearv betragtes objektet, der arver metodestubber og konstanter, som en type interfaceobjekt.Så hvis en klasse X arvet fra en grænseflade Y, ville ethvert tilfælde af klasse X også være et eksempel på klassen Y. Dette bliver mere kompliceret, når en klassens grænsefladearv involverer mere end en separat grænseflade.For hver ekstra grænseflade, der er arvet, kan den resulterende klasse legitimt bruges som et eksempel på hver.Hvis en klasse arvet fra ti forskellige grænseflader, kunne objekter i denne klasse bruges som et eksempel på elleve forskellige objekter, inklusive sig selv.

En sådan kompleks arv er ikke ofte nødvendig.Interface arv bruges til at sikre, at en klasse har et specifikt sæt af krævet adfærd, og disse opførsler gør det muligt for den at udføre en række funktioner, som den ellers ikke kunne gøre.Et almindeligt eksempel på dette er ActionListener -interface i Java, som kræver, at en klasse kun implementerer en bestemt metode.Succesfuld implementering af denne metode giver en bruger mulighed for at kontrollere knapper, menupunkter eller ethvert andet vinduesobjekt i klassen om ønsket.Interface arv er en relativt enkel måde at tilføje kompleks funktionalitet til en klasse uden at bekymre sig om de fleste komplicerede arvespørgsmål.

En af de største fordele ved at bruge interfacearv er, at det gør det muligt at bruge specifikke objekter i en generisk forstand.Da en klasse, der implementerer en grænseflade, er et eksempel på denne grænseflade, kan den bruges ethvert sted, et eksempel på denne grænseflade er påkrævet.For eksempel, hvis klasse A implementerer klasse C, og klasse B også implementerer klasse C, hvis en metode tager som en parameter en forekomst af klasse C, enten en forekomst af klasse A eller en forekomst af klasse B ville være en acceptabel parameter at bruge.Grænseflader kan ikke instantieres på egen hånd, fordi de ikke er komplette, så der ville aldrig være et objekt, der var rent et eksempel på klasse C som en parameter.