Abstrakt klass vs arv
Abstract class och Inheritance är två viktiga objektorienterade koncept som finns i många objektorienterade programmeringsspråk som Java. Abstrakt klass kan betraktas som en abstrakt version av en vanlig (konkret) klass, medan Arv tillåter nya klasser att utöka andra klasser. Abstrakt klass är en klass som inte kan initieras men som kan utökas. Så abstrakta klasser är bara meningsfulla att ha om programmeringsspråket stöder arv. I Java deklareras abstrakta klasser med abstrakt nyckelord, medan Extends nyckelord används för att ärva från en (super)klass.
Vad är abstrakt klass?
Vanligtvis kan abstrakta klasser, även kända som Abstrakta basklasser (ABC), inte instansieras (en instans av den klassen kan inte skapas). Så abstrakta klasser är bara meningsfulla att ha om programmeringsspråket stöder arv (möjlighet att skapa underklasser genom att utöka en klass). Abstrakta klasser representerar vanligtvis ett abstrakt koncept eller entitet med partiell eller ingen implementering. Därför fungerar abstrakta klasser som överordnade klasser från vilka underordnade klasser härleds så att den underordnade klassen kommer att dela de ofullständiga funktionerna i föräldraklassen och funktionalitet kan läggas till för att slutföra dem.
Abstrakta klasser kan innehålla abstrakta metoder. Underklasser som utökar en abstrakt klass kan implementera dessa (ärvda) abstrakta metoder. Om barnklassen implementerar alla sådana abstrakta metoder är det en konkret klass. Men om det inte gör det 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 den kommer att ha element som måste kompletteras av de ärvda underklasserna. Detta är ett trevligt sätt att skapa ett kontrakt mellan två programmerare, vilket förenklar uppgifter inom mjukvaruutveckling. Programmeraren, som skriver kod för att ärva, måste följa metoddefinitionerna exakt (men kan naturligtvis ha sin egen implementering).
Vad är arv?
Arv är ett objektorienterat koncept som tillåter nya klasser att utöka andra klasser. Extends nyckelord används för att implementera begreppet arv i programmeringsspråket Java. Arv ger i huvudsak kodåteranvändning genom att tillåta utvidgning av egenskaper och beteende hos en befintlig klass med en nydefinierad klass. När en ny underklass (eller härledd klass) utökar en superklass (eller överordnad klass) kommer den underklassen att ärva superklassens alla attribut och metoder. Underklassen kan valfritt åsidosätta beteendet (tillhandahålla ny eller utökad funktionalitet till metoder) som ärvts från den överordnade klassen. Vanligtvis kan en underklass inte utöka flera superklasser (t.ex. i Java). Därför kan du inte använda förlängningar för multipelt arv. För att få flera arv måste du använda gränssnitt.
Vad är skillnaden mellan abstrakt klass och arv?
Abstrakta klasser representerar vanligtvis ett abstrakt koncept eller en enhet med partiell eller ingen implementering. Arv tillåter nya klasser att utöka andra klasser. Eftersom abstrakta klasser inte kan instansieras, måste du använda begreppet arv för att använda abstrakta klasser. Annars har en abstrakt klass ingen användning. Abstrakta klasser kan innehålla abstrakta metoder och när klassen utökas ärvs alla metoder (abstrakta och konkreta). Den ärvda klassen kan implementera vilken som helst eller alla metoder. Om alla abstraktmetoder inte är implementerade, blir den klassen också en abstrakt klass. En klass kan inte ärva från mer än en abstrakt klass (detta är inte en egenskap hos abstrakta klasser i sig, utan snarare en begränsning av arv).
Relaterade inlägg:
Skillnaden mellan abstrakt klass och konkret klass
Skillnaden mellan virtuellt och abstrakt
Skillnaden mellan abstrakt klass och gränssnitt
Skillnaden mellan redskap och förlängningar
Skillnaden mellan graf och träd
Filerad under: Programmering Taggad med: ABC, abstrakt, Abstrakt basklass, Abstrakt klass, Abstrakt klass, Abstrakt nyckelord, Abstrakta metoder, konkret klass, Utökar nyckelord, Arv, Arvsklass, ärvd klass, Java, multipelt arv, objektorienterade koncept, vanlig klass, superklass
Om författaren: Indika
Indika, BSc. Eng, MSECE Computer Engineering, PhD. Datavetenskap, är biträdande professor och har forskningsintressen inom områdena bioinformatik, beräkningsbiologi och biomedicinsk naturlig språkbehandling.
Kommentarer
-
Jason säger
30 augusti 2017 kl. 13.25
Tack för att du förklarar skillnaden. Alla mina frågor har lösts av detta.
Svara
-
Aus säger
10 maj 2019 kl. 15.04
bästa svaret på webben, läraren förklarar inte skit och är meningslöst, monoton mf. Så här förklarar du begrepp.
Svara
Lämna ett svar Avbryt svar
Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med
Kommentar
Namn
E-post
Webbplats