Forskel mellem abstrakt klasse og arvelighed
Abstrakt klasse vs arvelighed
Abstrakt klasse og arv er to vigtige objektorienterede begreber fundet i mange objektorienterede programmeringssprog som Java. Abstrakt klasse kan betragtes som en abstrakt version af en regelmæssig (konkret) klasse, mens arv giver nye klasser mulighed for at udvide andre klasser. Abstrakt klasse er en klasse, der ikke kan initialiseres, men kan udvides. Så, abstrakte klasser er kun meningsfuldt at have, hvis programmeringssproget understøtter arv. I Java er abstrakte klasser erklæret ved hjælp af abstrakt søgeord, mens Extends søgeord bruges til at arve fra en (super) klasse.
Hvad er abstrakt klasse?
Typisk kan abstrakte klasser, også kendt som abstrakte basisklasser (ABC), ikke instantieres (en forekomst af denne klasse kan ikke oprettes). Så, abstrakte klasser er kun meningsfulde at have, hvis programmeringssproget understøtter arv (evnen til at oprette undergrupper fra at udvide en klasse). Abstrakte klasser repræsenterer normalt et abstrakt begreb eller enhed med delvis eller ingen implementering. Derfor fungerer abstrakte klasser som forældrenes klasser, hvorfra børnesklasserne er afledt, så barneklassen deler de ufuldstændige træk i forældrenes klasse 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 barneklassen gennemfører alle sådanne abstrakte metoder, er det en konkret klasse. Men hvis det ikke gør det, bliver barneklassen 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 arvelige underklasser. Dette er en god måde at skabe en kontrakt mellem to programmører, hvilket forenkler opgaver i softwareudvikling. Programmøren, der skriver kode for at arve, skal følge metoden definitionerne nøjagtigt (men selvfølgelig kan have sin egen implementering).
Hvad er arv?
Arv er et objektorienteret koncept, som giver nye klasser mulighed for at udvide andre klasser. Udvidelse af søgeord bruges til at implementere begrebet arv i Java-programmeringssprog. Arv giver i det væsentlige kodegenbrug ved at tillade udvidelse af egenskaber og opførsel af en eksisterende klasse af en nyligt defineret klasse. Når en ny underklasse (eller afledt klasse) udvider en superklasse (eller forældersklasse), vil underklasseet arve alle attributter og metoder til superklassen. Underklassen kan eventuelt tilsidesætte adfærden (give ny eller udvidet funktionalitet til metoder) arvet fra forældrenes klasse.En underklasse kan typisk ikke udvide flere superklasser (f.eks. I Java). Derfor kan du ikke bruge omfatter flere arv. For at få flere arv, skal du bruge grænseflader.
Hvad er forskellen mellem abstrakt klasse og arv?
Abstrakte klasser repræsenterer normalt 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 oprettes, skal du bruge begrebet arv til at gøre brug af abstrakte klasser. Ellers har en abstrakt klasse ingen brug. Abstrakte klasser kan indeholde abstrakte metoder, og når klassen forlænges, arves alle metoder (abstrakt og konkret). Den arvelige klasse kan implementere nogen eller alle metoderne. Hvis alle de abstrakte metoder ikke implementeres, bliver den klasse også en abstrakt klasse. En klasse kan ikke arve fra mere end en abstrakt klasse (dette er ikke en kvalitet af abstrakte klasser i sig selv, men snarere en begrænsning af arv).