Hvad er grænseflade arv?
Grænsefladearv er en mekanisme i visse computersprog, hvor specifikke funktioner arves af en klasse, og derefter skal den pågældende klasse give implementeringer til disse funktioner for at være komplette. Grænseflader findes kun i bestemte objektorienterede programmeringssprog. De kan bruges til at efterligne flere arv, mens de faktisk ikke tillader en klasse at formere arv, fordi der generelt ikke er nogen grænser for antallet af grænseflader, som en klasse kan arve fra. Foruden uimplementerede metoder kan grænseflader også omfatte offentlige konstanter.
Ved interface-arv betragtes det objekt, der arver metodestubber og konstanter, som en type interface-objekt. Så hvis en klasse X arvet fra en grænseflade Y, ville enhver forekomst af klasse X også være en forekomst af klassen Y. Dette bliver mere kompliceret, når en klasses interfacearv involverer mere end en separat grænseflade. For hver ekstra interface, 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 den 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 udføre. Et almindeligt eksempel på dette er ActionListener-interface i Java, som kræver, at en klasse kun implementerer en bestemt metode. Vellykket implementering af denne metode giver en bruger mulighed for at kontrollere knapper, menupunkter eller ethvert andet vindueobjekt i klassen, hvis det ønskes. Interface-arv er en relativt enkel måde at tilføje kompleks funktionalitet til en klasse uden at bekymre sig om de mest komplicerede arvsproblemer.
En af de største fordele ved at bruge interface-arv er, at det tillader, at specifikke objekter bruges i generisk forstand. Da en klasse, der implementerer en grænseflade, er en forekomst af denne grænseflade, kan den bruges ethvert sted, hvor der kræves et eksempel på det interface. For eksempel, hvis klasse A implementerer klasse C, og klasse B også implementerer klasse C, hvis en metode tager en parameter af en klasse C, er en forekomst af klasse A eller en forekomst af klasse B 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 rent var et eksempel på klasse C som en parameter.