Forskjell mellom abstrakt klasse og arv

Anonim

Abstrakt klasse vs arvelighet

Abstrakt klasse og arvelighet er to viktige objektorienterte begreper som finnes i mange objektorienterte programmeringsspråk som Java. Abstrakt klasse kan betraktes som en abstrakt versjon av en vanlig (konkret) klasse, mens Arvelighet tillater nye klasser å utvide andre klasser. Abstrakt klasse er en klasse som ikke kan initialiseres, men kan utvides. Så, abstrakte klasser er bare meningsfulle å ha hvis programmeringsspråket støtter arv. I Java er abstrakte klasser deklarert ved hjelp av Abstrakt søkeord, mens Extends søkeord brukes til å arve fra en (super) klasse.

Hva er Abstract Class?

Vanligvis kan abstrakte klasser, også kjent som abstrakte baseklasser (ABC), ikke instantieres (en forekomst av den klassen kan ikke opprettes). Så, abstrakte klasser er bare meningsfulle å ha hvis programmeringsspråket støtter arv (evne til å lage undergrupper fra å utvide en klasse). Abstrakte klasser representerer vanligvis et abstrakt konsept eller enhet med delvis eller ingen implementering. Derfor fungerer Abstrakte klasser som foreldreklasser hvorfra barneklasser er avledet slik at barneklassen vil dele de ufullstendige egenskapene til foreldreklassen og funksjonaliteten kan legges til for å fullføre dem.

Abstrakte klasser kan inneholde abstrakte metoder. Underklasser som utvider en abstrakt klasse, kan implementere disse (arvede) abstrakte metoder. Hvis barnklassen implementerer alle slike abstrakte metoder, er det en konkret klasse. Men hvis det ikke blir barnklassen også en abstrakt klasse. Hva dette betyr er at når programmøren nominerer en klasse som et abstrakt, sier hun at klassen vil være ufullstendig og den vil ha elementer som må fylles ut av arvelige underklasser. Dette er en fin måte å skape en kontrakt mellom to programmerere, noe som forenkler oppgavene i programvareutvikling. Programmøren, som skriver kode for å arve, må følge metoden definisjonene nøyaktig (men selvfølgelig kan hun selv gjennomføre).

Hva er arvelighet?

Arv er et objektorientert konsept som tillater nye klasser å utvide andre klasser. Extends søkeord brukes til å implementere begrepet arv i Java programmeringsspråk. Arv gir i hovedsak kodeutnyttelse ved å tillate utvidelse av egenskaper og oppførsel av en eksisterende klasse med en nylig definert klasse. Når en ny underklasse (eller avledet klasse) utvider en superklasse (eller overordnet klasse), vil underklasseet arve alle attributter og metoder til superklassen. Underklassen kan eventuelt overstyre oppførselen (gi ny eller utvidet funksjonalitet til metoder) arvet fra foreldreklassen.En underklasse kan vanligvis ikke utvide flere superklasser (f.eks. I Java). Derfor kan du ikke bruke strekker seg til flere arv. For å få flere arv må du bruke grensesnitt.

Hva er forskjellen mellom abstrakt klasse og arvelighet?

Abstrakte klasser representerer vanligvis et abstrakt konsept eller en enhet med delvis eller ingen implementering. Arv gir nye klasser mulighet til å utvide andre klasser. Fordi, abstrakte klasser ikke kan bli instantiated, må du bruke begrepet arv for å gjøre bruk av abstrakte klasser. Ellers har en abstrakt klasse ingen bruk. Abstrakte klasser kan inneholde abstrakte metoder og når klassen utvides, er alle metoder (abstrakt og konkret) arvet. Den arvelige klassen kan implementere noen eller alle metodene. Hvis alle abstrakte metoder ikke blir implementert, blir den klassen også en abstrakt klasse. En klasse kan ikke arve fra mer enn en abstrakt klasse (dette er ikke en kvalitet av abstrakte klasser i seg selv, men snarere en begrensning av arv).