Skillnad mellan abstrakt klass och gränssnitt

Anonim

Abstrakt klass vs gränssnitt

Abstrakt klass och gränssnitt är två objektorienterade konstruktioner som finns i många objektorienterade programmeringsspråk som Java. Abstrakt klass kan betraktas som en abstrakt version av en vanlig (konkret) klass, medan ett gränssnitt kan betraktas som ett sätt att genomföra ett kontrakt. Abstrakt klass är en klass som inte kan initieras men kan utökas. Gränssnittet är en typ som måste genomföras av andra klasser. I Java förklaras abstrakta klasser med hjälp av abstrakt nyckelord, medan gränssnittssökordet används för att definiera ett gränssnitt.

Vad är en abstrakt klass?

Vanligtvis kan abstrakta klasser, även kända som abstrakta basklasser (ABC), inte instantieras (en förekomst av den klassen kan inte skapas). Så, abstrakta klasser är bara meningsfulla att ha om programmeringsspråket stöder arv (förmåga att skapa underklasser från att utöka en klass). Abstrakta klasser representerar vanligtvis ett abstrakt begrepp eller enhet med partiell eller ingen implementering. Därför fungerar abstrakta klasser som föräldrakurser från vilka barnklasser härleds så att barnklassen kommer att dela de ofullständiga funktionerna i förälderklassen och funktionaliteten kan läggas till för att komplettera dem.

Abstrakta klasser kan innehålla abstrakta metoder. Underklasser som omfattar en abstrakt klass kan implementera dessa (ärftliga) abstrakta metoder. Om barnklassen genomför alla sådana abstrakta metoder är det en konkret klass. Men om det inte gör, blir barnklassen också en abstrakt klass. Vad allt detta betyder är att när programmeraren nominerar en klass som en abstrakt, säger hon att klassen kommer att vara ofullständig och det kommer att ha element som måste fyllas i av de arvande underklassen. Det här är ett trevligt sätt att skapa ett kontrakt mellan två programmerare, vilket förenklar uppgifterna i mjukvaruutveckling. Programmeraren, som skriver kod för att ärva, måste följa metoddefinitionerna exakt (men självklart kan ha sin egen implementering).

Vad är ett gränssnitt?

Ett gränssnitt är en abstrakt typ som används för att ange ett kontrakt som ska genomföras av klasser som implementerar det gränssnittet. Gränssnittssökordet används för att definiera ett gränssnitt och implementeringsordet används för att implementera ett gränssnitt av en klass (i Java-programmeringsspråk). Vanligtvis kommer ett gränssnitt endast att innehålla metod signaturer och konstanta deklarationer. Varje gränssnitt som implementerar ett visst gränssnitt ska genomföra alla metoder som definieras i gränssnittet, eller bör deklareras som en abstrakt klass. I Java kan typen av en objektreferens definieras som en gränssnittstyp. Men det objektet måste antingen vara noll eller borde inneha ett föremål för en klass, som implementerar det speciella gränssnittet.Genom att använda Implements sökord i Java kan du implementera flera gränssnitt till en enda klass.

Vad är skillnaden mellan abstrakt klass och gränssnitt?

Abstrakta klasser representerar vanligtvis ett abstrakt begrepp eller en enhet med partiell eller ingen implementering. Å andra sidan är ett gränssnitt en abstrakt typ som används för att specificera ett kontrakt som ska genomföras av klasser. Abstrakta klasser bör vara ärvda (eller förlängda), medan gränssnitt ska genomföras. Abstrakta klasser kan innehålla abstrakta metoder, medan ett gränssnitt endast innehåller abstrakta metoder. Abstrakta klasser kan innehålla några variabler, men gränssnitt kan bara definiera konstanter. En klass kan inte ärva från mer än en abstrakt klass men kan implementera flera gränssnitt. Ett gränssnitt kan inte implementera ett annat gränssnitt. Ett gränssnitt kan dock förlänga en klass.