Skip to main content

Vad är gränssnittsarv?

Interface -arv är en mekanism på vissa datorspråk där specifika funktioner ärvs av en klass, och då måste den specifika klassen tillhandahålla implementeringar för dessa funktioner för att vara fullständiga.Gränssnitt finns endast på vissa objektorienterade programmeringsspråk.De kan användas för att emulera flera arv medan de faktiskt inte tillåter en klass att multiplicera ärva, eftersom det i allmänhet inte finns några gränser för antalet gränssnitt som en klass kan ärva från.Förutom oimplementerade metoder kan gränssnitt också inkludera offentliga konstanter.

I gränssnittsarv anses objektet som ärver metodstubbar och konstanter vara en typ av gränssnittsobjekt.Så om en klass X ärvt från ett gränssnitt Y, skulle någon instans av klass X också vara ett exempel på klassen Y. Detta blir mer komplicerat när ett klassgränssnittsarv innebär mer än ett separat gränssnitt.För varje ytterligare gränssnitt som ärvs kan den resulterande klassen legitimt användas som en instans av var och en.Om en klass ärvt från tio olika gränssnitt, kan objekt i den klassen användas som en instans av elva olika objekt, inklusive sig själv.

Sådan komplex arv är inte ofta nödvändigt.Interitans av gränssnitt används för att säkerställa att en klass har en specifik uppsättning nödvändiga beteenden, och dessa beteenden gör det möjligt att utföra en mängd olika funktioner som den annars inte kunde göra.Ett vanligt exempel på detta är ActionListener -gränssnittet i Java, som kräver att en klass endast implementerar en specifik metod.Framgångsrik implementering av denna metod gör det möjligt för en användare att styra knappar, menyalternativ eller något annat fönsterobjekt i klassen om så önskas.Gränssnittsarv är ett relativt enkelt sätt att lägga till komplex funktionalitet i en klass utan att oroa sig för mest komplicerade arvsproblem.

En av de största fördelarna med att använda gränssnittsarv är att det gör att specifika objekt kan användas i generisk mening.Eftersom en klass som implementerar ett gränssnitt är ett exempel på det gränssnittet, kan det användas var som helst en instans av det gränssnittet krävs.Till exempel, om klass A implementerar klass C, och klass B också implementerar klass C, om en metod tar som en parameter en instans av klass C, antingen en instans av klass A eller en instans av klass B skulle vara en acceptabel parameter att använda.Gränssnitt kan inte instanseras på egen hand eftersom de inte är kompletta, så det skulle aldrig finnas ett objekt som rent var ett exempel på klass C som en parameter.