Abstrakt klasse vs arv
Abstract class og Inheritance er to vigtige objektorienterede begreber, der findes i mange objektorienterede programmeringssprog som Java. Abstrakt klasse kan betragtes som en abstrakt version af en almindelig (konkret) klasse, mens arv tillader nye klasser at udvide andre klasser. Abstrakt klasse er en klasse, der ikke kan initialiseres, men som kan udvides. Så abstrakte klasser er kun meningsfulde at have, hvis programmeringssproget understøtter arv. I Java erklæres abstrakte klasser ved hjælp af abstrakt nøgleord, mens Extends nøgleord bruges til at arve fra en (super) klasse.
Hvad er abstrakt klasse?
Typisk kan abstrakte klasser, også kendt som abstrakte basisklasser (ABC), ikke instansieres (en forekomst af den klasse kan ikke oprettes). Så abstrakte klasser er kun meningsfulde at have, hvis programmeringssproget understøtter arv (evnen til at oprette underklasser fra at udvide en klasse). Abstrakte klasser repræsenterer norm alt et abstrakt koncept eller entitet med delvis eller ingen implementering. Derfor fungerer abstrakte klasser som forældreklasser, hvorfra børneklasser er afledt, så børneklassen deler de ufuldstændige funktioner i forældreklassen, og funktionalitet kan tilføjes for at fuldføre dem.
Abstrakte klasser kan indeholde abstrakte metoder. Underklasser, der udvider en abstrakt klasse, kan implementere disse (arvede) abstrakte metoder. Hvis børneklassen implementerer alle sådanne abstrakte metoder, er det en konkret klasse. Men hvis den ikke gør det, bliver børneklassen også en abstrakt klasse. Hvad alt dette betyder er, at når programmøren nominerer en klasse som et abstrakt, siger hun, at klassen vil være ufuldstændig, og den vil have elementer, der skal udfyldes af de nedarvede underklasser. Dette er en fin måde at skabe en kontrakt mellem to programmører på, hvilket forenkler opgaver inden for softwareudvikling. Programmøren, som skriver kode for at arve, skal følge metodedefinitionerne nøjagtigt (men kan selvfølgelig have sin egen implementering).
Hvad er arv?
Inheritance er et objektorienteret koncept, som tillader nye klasser at udvide andre klasser. Extends nøgleord bruges til at implementere begrebet arv i programmeringssproget Java. Nedarvning giver i det væsentlige kodegenbrug ved at tillade udvidelse af egenskaber og adfærd for en eksisterende klasse med en nydefineret klasse. Når en ny underklasse (eller afledt klasse) udvider en superklasse (eller overordnet klasse), vil denne underklasse arve alle superklassens attributter og metoder. Underklassen kan valgfrit tilsidesætte adfærden (give ny eller udvidet funktionalitet til metoder), der er arvet fra den overordnede klasse. Typisk kan en underklasse ikke udvide flere superklasser (f.eks. i Java). Derfor kan du ikke bruge forlænger til multipel arv. For at have multipel arv skal du bruge grænseflader.
Hvad er forskellen mellem abstrakt klasse og arv?
Abstrakte klasser repræsenterer norm alt et abstrakt koncept eller en enhed med delvis eller ingen implementering. Arv giver nye klasser mulighed for at udvide andre klasser. Fordi abstrakte klasser ikke kan instansieres, skal du bruge begrebet arv for at gøre brug af abstrakte klasser. Ellers har en abstrakt klasse ingen nytte. Abstrakte klasser kan indeholde abstrakte metoder, og når klassen udvides, nedarves alle metoder (abstrakte og konkrete). Den nedarvede klasse kan implementere enhver eller alle metoderne. Hvis alle abstrakte metoder ikke er implementeret, bliver den klasse også en abstrakt klasse. En klasse kan ikke arve fra mere end én abstrakt klasse (dette er ikke en kvalitet af abstrakte klasser i sig selv, men snarere en begrænsning af arv).
Relaterede indlæg:
Forskellen mellem abstrakt klasse og konkret klasse
Forskellen mellem virtuelt og abstrakt
Forskellen mellem abstrakt klasse og grænseflade
Forskel mellem redskaber og udvidelser
Forskel mellem graf og træ
Fileret under: Programmering tagget med: ABC, abstrakt, Abstrakt basisklasser, Abstrakt klasse, Abstrakte klasser, Abstrakt søgeord, Abstrakte metoder, konkret klasse, Udvider søgeord, Arv, Arv klasse, nedarvet klasse, Java, multipel arv, objektorienterede koncepter, almindelig klasse, superklasse
Om forfatteren: Indika
Indika, BSc. Eng, MSECE Computer Engineering, PhD. Computer Science, er adjunkt og har forskningsinteresser inden for områderne bioinformatik, beregningsbiologi og biomedicinsk naturlig sprogbehandling.
Kommentarer
-
Jason siger
30. august 2017 kl. 13.25
Tak, fordi du forklarer forskellen. Alle mine spørgsmål er blevet løst ved dette.
Svar
-
Aus siger
10. maj 2019 kl. 15.04
bedste svar på nettet, læreren forklarer ikke noget lort og giver ingen mening, monotone mf. Sådan forklarer du begreber.
Svar
Send et svar Annuller svar
Din e-mailadresse vil ikke blive offentliggjort. Påkrævede felter er markeret med
Kommentar
Navn
Websted