Forskjell mellom abstrakt klasse og grensesnitt

Anonim

Abstrakt klasse vs grensesnitt

Abstrakt klasse og grensesnitt er to objektorienterte konstruksjoner som finnes i mange objektorienterte programmeringsspråk som Java. Abstrakt klasse kan betraktes som en abstrakt versjon av en vanlig (konkret) klasse, mens et grensesnitt kan betraktes som et middel til å gjennomføre en kontrakt. Abstrakt klasse er en klasse som ikke kan initialiseres, men kan utvides. Grensesnitt er en type som må implementeres av andre klasser. I Java er abstrakte klasser deklarert ved hjelp av abstrakt søkeord, mens grensesnittordet brukes til å definere et grensesnitt.

Hva er en abstrakt klasse?

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 et grensesnitt?

Et grensesnitt er en abstrakt type som brukes til å spesifisere en kontrakt som skal implementeres av klasser, som implementerer det grensesnittet. Grensesnittet søkeord brukes til å definere et grensesnitt, og implementeringsordet brukes til å implementere et grensesnitt av en klasse (i Java-programmeringsspråket). Vanligvis vil et grensesnitt bare inneholde metodesignaturer og konstante deklarasjoner. Ethvert grensesnitt som implementerer et bestemt grensesnitt, bør implementere alle metodene som er definert i grensesnittet, eller skal deklareres som en abstrakt klasse. I Java kan typen av en objektreferanse defineres som en grensesnitttype. Men det objektet må enten være null eller burde holde et objekt av en klasse, som implementerer det aktuelle grensesnittet.Ved hjelp av verktøy for implementering i Java, kan du implementere flere grensesnitt til en enkelt klasse.

Hva er forskjellen mellom abstrakt klasse og grensesnitt?

Abstrakte klasser representerer vanligvis et abstrakt konsept eller en enhet med delvis eller ingen implementering. På den annen side er et grensesnitt en abstrakt type som brukes til å spesifisere en kontrakt som skal implementeres av klasser. Abstrakte klasser skal være arvet (eller utvidet), mens grensesnitt skal implementeres. Abstrakte klasser kan inneholde abstrakte metoder, mens et grensesnitt bare skal inneholde abstrakte metoder. Abstrakte klasser kan inneholde noen variabler, men grensesnitt kan bare definere konstanter. En klasse kan ikke arve fra mer enn en abstrakt klasse, men kan implementere flere grensesnitt. Et grensesnitt kan ikke implementere et annet grensesnitt. Men et grensesnitt kan utvide en klasse.