Forskellen Mellem Abstrakt Klasse Og Arv

Forskellen Mellem Abstrakt Klasse Og Arv
Forskellen Mellem Abstrakt Klasse Og Arv

Video: Forskellen Mellem Abstrakt Klasse Og Arv

Video: Forskellen Mellem Abstrakt Klasse Og Arv
Video: Styr på arven: Hvem får pensionen? (3:7) 2024, September
Anonim

Abstrakt klasse vs arv

Abstrakt klasse og arv 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 udvidet nøgleord bruges til at arve fra en (super) klasse.

Hvad er abstrakt klasse?

Typisk kan abstrakte klasser, også kendt som abstrakte baseklasser (ABC), ikke instantieres (en forekomst af denne klasse kan ikke oprettes). Så abstrakte klasser er kun meningsfulde at have, hvis programmeringssproget understøtter arv (evne til at oprette underklasser fra at udvide en klasse). Abstrakte klasser repræsenterer normalt et abstrakt koncept eller enhed med delvis eller ingen implementering. Derfor fungerer abstrakte klasser som overordnede klasser, hvorfra barneklasser stammer, så barneklassen deler de ufuldstændige funktioner i overordnede klassen, 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 (nedarvede) abstrakte metoder. Hvis børneklassen implementerer alle sådanne abstrakte metoder, er det en konkret klasse. Men hvis det ikke gør det, bliver børneklassen også en abstrakt klasse. Hvad alt dette betyder er, at når programmøren udnævner en klasse til et abstrakt, siger hun, at klassen vil være ufuldstændig, og at den vil have elementer, der skal udfyldes med de arvende underklasser. Dette er en god måde at oprette en kontrakt mellem to programmører på, hvilket forenkler opgaver inden for softwareudvikling. Programmøren, der skriver kode for at arve, skal følge metodedefinitionerne nøjagtigt (men kan selvfølgelig have sin egen implementering).

Hvad er arv?

Arv er et objektorienteret koncept, der giver nye klasser mulighed for at udvide andre klasser. Udvidet nøgleord bruges til at implementere begrebet arv i Java-programmeringssprog. Arv tilvejebringer i det væsentlige genbrug af kode ved at tillade udvidelse af egenskaber og opførsel af en eksisterende klasse med en nyligt defineret klasse. Når en ny underklasse (eller afledt klasse) udvider en superklasse (eller overordnet klasse), arver den underklasse alle attributter og metoder i superklassen. Underklassen kan eventuelt tilsidesætte den adfærd (tilvejebringe 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 udvidelser til flere arv. For at have 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 tillader nye klasser at udvide andre klasser. Fordi abstrakte klasser ikke kan instantieres, 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 udvides, arves alle metoder (abstrakt og konkret). Den nedarvede klasse kan implementere en hvilken som helst eller alle metoderne. Hvis alle abstrakte metoder ikke implementeres, bliver denne 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).

Anbefalet: