Abstrakt klasse vs arv
Abstract class og Inheritance er to viktige objektorienterte konsepter som finnes i mange objektorienterte programmeringsspråk som Java. Abstrakt klasse kan betraktes som en abstrakt versjon av en vanlig (betong) klasse, mens Arv lar nye klasser utvide andre klasser. Abstrakt klasse er en klasse som ikke kan initialiseres, men som kan utvides. Så abstrakte klasser er bare meningsfulle å ha hvis programmeringsspråket støtter arv. I Java deklareres abstrakte klasser ved hjelp av abstrakt nøkkelord, mens Extends nøkkelord brukes for å arve fra en (super)klasse.
Hva er abstrakt klasse?
Vanligvis kan abstrakte klasser, også kjent som Abstrakte Base Classes (ABC), ikke instansieres (en forekomst av den klassen kan ikke opprettes). Så abstrakte klasser er bare meningsfulle å ha hvis programmeringsspråket støtter arv (evne til å lage underklasser fra å utvide en klasse). Abstrakte klasser representerer vanligvis et abstrakt konsept eller entitet med delvis eller ingen implementering. Derfor fungerer abstrakte klasser som overordnede klasser som barneklasser er avledet fra, slik at barneklassen vil dele de ufullstendige funksjonene til overordnet klassen, og funksjonalitet kan legges til for å fullføre dem.
Abstrakte klasser kan inneholde abstrakte metoder. Underklasser som utvider en abstrakt klasse kan implementere disse (arvede) abstrakte metodene. Hvis barneklassen implementerer alle slike abstrakte metoder, er det en konkret klasse. Men hvis den ikke gjør det, blir barneklassen også en abstrakt klasse. Hva alt dette betyr er at når programmereren nominerer en klasse som en abstrakt, sier hun at klassen vil være ufullstendig og den vil ha elementer som må fullføres av de arvende underklassene. Dette er en fin måte å lage en kontrakt mellom to programmerere på, som forenkler oppgaver innen programvareutvikling. Programmereren, som skriver kode for å arve, må følge metodedefinisjonene nøyaktig (men kan selvfølgelig ha sin egen implementering).
Hva er arv?
Inheritance er et objektorientert konsept, som lar nye klasser utvide andre klasser. Extends nøkkelord brukes til å implementere konseptet med arv i programmeringsspråket Java. Arv gir i hovedsak kodegjenbruk ved å tillate utvidelse av egenskaper og oppførsel til en eksisterende klasse med en nylig definert klasse. Når en ny underklasse (eller avledet klasse) utvider en superklasse (eller overordnet klasse), vil den underklassen arve alle attributter og metoder til superklassen. Underklassen kan valgfritt overstyre atferden (gi ny eller utvidet funksjonalitet til metoder) som er arvet fra den overordnede klassen. Vanligvis kan ikke en underklasse utvide flere superklasser (f.eks. i Java). Derfor kan du ikke bruke utvidelser for multippel arv. For å ha multippel arv, må du bruke grensesnitt.
Hva er forskjellen mellom abstrakt klasse og arv?
Abstrakte klasser representerer vanligvis et abstrakt konsept eller en enhet med delvis eller ingen implementering. Arv lar nye klasser utvide andre klasser. Fordi abstrakte klasser ikke kan instansieres, må du bruke konseptet med arv for å bruke abstrakte klasser. Ellers har en abstrakt klasse ingen nytte. Abstrakte klasser kan inneholde abstrakte metoder og når klassen utvides, arves alle metoder (abstrakte og konkrete). Den arvede klassen kan implementere hvilken som helst eller alle metodene. Hvis alle abstrakte metodene ikke er implementert, blir den klassen også en abstrakt klasse. En klasse kan ikke arve fra mer enn én abstrakt klasse (dette er ikke en kvalitet på abstrakte klasser i seg selv, men snarere en restriksjon for arv).
Relaterte innlegg:
Forskjellen mellom abstrakt klasse og konkret klasse
Forskjellen mellom virtuell og abstrakt
Forskjellen mellom abstrakt klasse og grensesnitt
forskjellen mellom verktøy og utvidelser
Forskjellen mellom graf og tre
Filt under: Programmering tagget med: ABC, abstrakt, Abstrakt grunnklasser, Abstrakt klasse, Abstrakte klasser, Abstrakt nøkkelord, Abstrakte metoder, konkret klasse, Utvider nøkkelord, Arv, Arv klasse, arvet klasse, Java, multippel arv, objektorienterte konsepter, vanlig klasse, superklasse
Om forfatteren: Indika
Indika, BSc. Eng, MSECE Computer Engineering, PhD. Datavitenskap, er assisterende professor og har forskningsinteresser innen områdene bioinformatikk, beregningsbiologi og biomedisinsk naturlig språkbehandling.
Kommentarer
-
Jason sier
30. august 2017 kl. 13.25
Takk for at du forklarte forskjellen. Alle spørsmålene mine er løst av dette.
Svar
-
Aus sier
10. mai 2019 kl. 15.04
beste svar på nettet, lærer forklarer ikke dritt og gir ingen mening, monotone mf. Slik forklarer du konsepter.
Svar
Legg igjen et svar Avbryt svar
Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket
Kommentar
Navn
E-post
Nettsted