Forskjellen mellom abstrakt klasse og grensesnitt

Forskjellen mellom abstrakt klasse og grensesnitt
Forskjellen mellom abstrakt klasse og grensesnitt

Video: Forskjellen mellom abstrakt klasse og grensesnitt

Video: Forskjellen mellom abstrakt klasse og grensesnitt
Video: Топ 10 Самые Большие Порты в Мире | Top 10 Biggest Ports in the World 2024, November
Anonim

Abstract Class vs Interface

Abstract 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 (betong) klasse, mens et grensesnitt kan betraktes som et middel for å implementere en kontrakt. Abstrakt klasse er en klasse som ikke kan initialiseres, men som kan utvides. Grensesnitt er en type som må implementeres av andre klasser. I Java deklareres abstrakte klasser ved hjelp av abstrakt nøkkelord, mens grensesnittnøkkelordet brukes til å definere et grensesnitt.

Hva er en 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 et grensesnitt?

Et grensesnitt er en abstrakt type som brukes til å spesifisere en kontrakt som skal implementeres av klasser som implementerer det grensesnittet. Grensesnittnøkkelordet brukes til å definere et grensesnitt og Implements nøkkelordet brukes for å implementere et grensesnitt av en klasse (i Java programmeringsspråk). Vanligvis vil et grensesnitt kun inneholde metodesignaturer og konstante erklæringer. Ethvert grensesnitt som implementerer et bestemt grensesnitt bør implementere alle metoder som er definert i grensesnittet, eller bør erklæres som en abstrakt klasse. I Java kan typen til en objektreferanse defineres som en grensesnitttype. Men det objektet må enten være null eller skal inneholde et objekt av en klasse, som implementerer det spesielle grensesnittet. Ved å bruke Implements nøkkelord 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 bør arves (eller utvides), mens grensesnitt bør implementeres. Abstrakte klasser kan inneholde abstrakte metoder, mens et grensesnitt bare skal inneholde abstrakte metoder. Abstrakte klasser kan inneholde alle variabler, men grensesnitt kan bare definere konstanter. En klasse kan ikke arve fra mer enn én abstrakt klasse, men kan implementere flere grensesnitt. Et grensesnitt kan ikke implementere et annet grensesnitt. Et grensesnitt kan imidlertid utvide en klasse.

Anbefalt: