Vad är gränssnitt ärft?
Gränssnittarv är en mekanism på vissa datorspråk där specifika funktioner ärvs av en klass, och då måste den klassen tillhandahålla implementationer för dessa funktioner för att vara fullständiga. Gränssnitt finns bara i vissa objektorienterade programmeringsspråk. De kan användas för att emulera flera arv medan de faktiskt inte tillåter en klass att multiplicera arv, eftersom det generellt inte finns några gränser för antalet gränssnitt 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 en instans av klassen Y. Detta blir mer komplicerat när klassens gränssnittarv involverar mer än ett separat gränssnitt. För varje ytterligare gränssnitt som ärvs kan den resulterande klassen legitimt användas som en instans för varje. Om en klass ärvde från tio olika gränssnitt, kan objekt i den klassen användas som ett exempel på elva olika objekt, inklusive sig själv.
Sådan komplex arv är inte ofta nödvändig. Gränssnittarv 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 för den att utföra en mängd 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 kontrollera knappar, menyalternativ eller något annat fönsterobjekt i klassen om så önskas. Gränssnittarv är ett relativt enkelt sätt att lägga till komplex funktionalitet i en klass utan att oroa dig för de mest komplicerade arvsproblemen.
En av de största fördelarna med att använda gränssnittarv ä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. Om till exempel klass A implementerar klass C och klass B också implementerar klass C, om en metod tar som en parameter en instans av klass C, kan antingen en instans av klass A eller en instans av klass B vara en acceptabel parameter att använda . Gränssnitt kan inte inställas på egen hand eftersom de inte är kompletta, så det skulle aldrig finnas ett objekt som endast var ett exempel på klass C som en parameter.