Forskjellen mellom abstrakt klasse og grensesnitt

Abstrakt klasse vs grensesnitt

Abstrakt klasse (eller type) er en type i et nominativt type system deklarert av programmet. Selv om navnet tilsier dette, kan en abstrakt klasse inneholde abstrakte metoder eller egenskaper. Kvalifikasjonsklassen refererer til forskjellige språkkonstruksjoner som kan brukes til å implementere abstrakte typer. Abstrakte klasser kan karakteriseres av et designproblem som holder med den beste objektorienterte programmeringen og deres uferdige natur.

Et grensesnitt er en abstrakt type som klassene må implementere for å angi et grensesnitt (generisk sett). Grensesnitt kan bare inneholde metodesignaturer og konstante deklarasjoner (både statiske og endelige), aldri metodenavn. Grensesnitt simulerer flere arv og brukes til å kode likheter delt mellom ulike typer klasser.

Abstrakte typer kan skape, betegnes eller simuleres på flere forskjellige måter. En programmerer kan betegne abstrakte typer ved å bruke søkeordet abstrakt eksplisitt, ved å inkludere en eller flere metoder i klasset definisjonen, arve fra en annen abstrakt type uten å overstyre manglende funksjoner som er nødvendige for å fullføre klasses definisjonen, eller ved å sende en bestemt metode til objektorienterte programmeringsspråk kjent som dette som ikke implementerer metoden direkte.

Grensesnitt kan defineres ved hjelp av abstrakte metoder. Klasser kan også implementeres i grensesnitt. Hvis en klasse gjennomfører et grensesnitt og ikke implementerer alle sine metoder, må signifikatorabstraktet brukes, ellers er signifikanten ikke nødvendig (fordi alle grensesnitt er iboende abstrakte). Klasser kan også implementere flere grensesnitt.

Mens grensesnitt brukes til å spesifisere generiske grensesnitt, kan abstrakte typer brukes til å definere og håndheve protokollen (som er et sett med operasjoner som alle objekter som implementerer den ønskede protokollen må støtte). Abstrakte typer forekommer ikke på språk uten subtyping. Som slike subtyper blir det tvunget til å implementere all nødvendig funksjonalitet, slik at programutførelsen er riktig. Det finnes flere måter hvor abstrakte typer kan opprettes: Fulle abstrakte grunnklasser er klasser som enten eksplisitt erklæres å være abstrakte eller inneholder abstrakte (ikke-implementerte) metoder; Vanlige Lisp Object Systems inkluderer blandinger som er basert på Flavors systemet; Java, selvfølgelig; og egenskaper som fungerer som en utvidelse til Smalltalk.

Sammendrag:
1. Abstrakte klasser (eller typer) erklære programmer; grensesnitt er abstrakte typer som alle klasser må implementere for å kunne spesifisere grensesnittet.
2. Abstrakte typer kan betegnes ved hjelp av søkeordet eksplisitt; grensesnitt er iboende abstrakte, derfor trenger ikke å bli betegnet ved hjelp av søkeordet i det hele tatt (med mindre en bestemt klasse implementerer et grensesnitt, men implementerer ikke alle dens metoder).