C # Abstract vs Interface - Lær de viktigste viktigste forskjellene

Innholdsfortegnelse:

Anonim

Forskjeller mellom C # Abstract vs Interface

Abstrakt klasse og grensesnitt er begge veldig viktige metoder for å lære for å forstå all objektorientert programmeringstrening. Normalt er begge deler veldig forvirrende for den første starten av en elev på objektorientert programmering. Hvis vi definerer en abstrakt klasse, men ikke implementerer noe, så ser det absolutt ut som grensesnitt, ingen vil være i stand til å forstå noen forskjell mellom dem i stedet for en erklæring. Imidlertid har det mange forskjeller og likheter mellom grensesnitt og abstrakt klasse.

En abstrakt klasse er enkel klasse som definerer som abstrakt og ikke kunne bli innstilt. En abstrakt klasse må utvides med noen underklasser for å bruke alle funksjonene eller nytten til den spesifikke superklassen eller den abstrakte klassen. Det hjelper faktisk å opprettholde riktig hierarki av superklasser eller underklasser. Flere underklasser kan bruke samme navn på funksjonalitet med forskjellige definisjoner. Det sikrer faktisk at applikasjonen skal følge noen spesifikke hierarki eller standarder som viderefører applikasjonen riktig forklarbar funksjonalitet.

Grensesnittet er absolutt ikke en klasse, det akkurat som en enhet som defineres av ett spesifikt ordgrensesnitt. Grensesnitt definerte aldri noen definisjon, det avhenger helt av spesifikk deklarasjon, som skal arve av flere klasser samtidig. Flere klasser kan definere flere definisjoner av den individuelle erklæringen av ett spesifikt grensesnitt. Det har også samme type anlegg som Abstract klasse, det hjelper hovedsakelig med å opprettholde et samme hierarki av underklasser med en annen definisjon. Men hovedforskjellen mellom abstrakt klasse og grensesnitt utvides med flere abstrakte klasser er ikke mulig, mens arv etter flere grensesnitt er mulig. Siden C # ikke støtter flere arv, så gir den samme typen funksjonalitet grensesnittet.

Sammenligning fra topp til hodet mellom C # Abstract vs Interface (Infographics)

Nedenfor er de beste sammenligningene mellom C # Abstract vs Interface

Viktige forskjeller mellom C # Abstract vs Interface

Noen viktige forskjeller er forklart nedenfor mellom C # Abstract vs Interface

  1. Abstrakt klasse og grensesnitt brukes begge av en eller mange underklasser. Hovedbegrensningen er at en underklasse ikke kan utvide flere abstrakte klasser betyr at flere arv ikke kan være mulig, mens underklassen kan arve flere grensesnitt en gang.
  2. Abstraktet kan inneholde kroppen med en definisjon eller eneste definisjon av en metode. Underklasse som utvider den abstrakte klassen kan brukes med kroppsmetode og også kan forklare kroppsdetaljer om enhver spesifikk definisjon av den abstrakte metoden betyr overstyring kan være mulig. Den abstrakte klassen skal ha minst en abstrakt metode (betyr den eneste definisjonen av metoden uten kropp). Grensesnitt har bare definisjonen av metoden, den skal ikke inneholde noen kroppsdetaljer for definisjonsmetoden. Én underklassearv som grensesnitt og bruker dem som ikke definerer metoden ved å gi riktige kroppsdetaljer dynamisk for flere underklasser.
  3. En abstrakt klasse kan ha forskjellige tilgangsmodifiserere som offentlige, private eller beskyttede, så enhver metode eller egenskaper i den abstrakte klassen kan definere forskjellige tilgangsmodifiserere. Mens grensesnitt ikke kan gi noen tilgangsmodifiserer, så alle egenskapene eller metodene som er definert i grensesnittet skal være offentlig tilgangsmodifiserer, har ikke muligheten til å definere en annen tilgangsmodifisering inne i grensesnittet.
  4. Superklasse og underklasse konsept er perfekt for den abstrakte klassen. En abstrakt klasse kan gis kjerneidentiteten til en underklasse, den har normalt en lignende type objekt fra den spesifikke underklassen. Mens grensesnitt normalt definerer en spesifikk type perifer aktivitet i en klasse. Anta at vi har ett grensesnittnavn som kan flyttes, nå kan dette grensesnittet arves av både bil og menneske. Mens biler og mennesker begge er et helt annet klasseobjekt og ikke har noe forhold mellom dem.
  5. Hvis applikasjonen har forskjellige implementeringer, men aktiviteten til den spesifikke implementeringen er nesten den samme, er det bedre å bruke abstrakt-klassen, der du kan definere den spesifikke logikken og alle underklasser lett får tilgang til den samme logikken hver gang. Som et eksempel på databasetilkobling, som vanligvis brukes av alle underklasser, så hvis denne tilkoblingsgenerasjons- og lukkekoden kan inneholde en abstrakt klasse, vil det være veldig enkelt for alle underklasser å få tilgang til det. Mens flere implementeringer bare vil dele signaturen til metoden, er grensesnittet alltid bedre.

Sammenligning Tabell C # Abstrakt vs grensesnitt

Følgende er sammenligningstabellen mellom C # Abstract vs Interface

BASIS FOR

SAMMENLIGNING

Abstrakt klasseInterface
Flere arverÉn underklasse kan bare utvide en abstrakt klasse, ikke flere.Én underklasse kan implementere flere grensesnitt som hjelper til med å gjenopprette ikke å støtte flere arvsfunksjoner til C #.
KlassedefinisjonGrensesnitt definerer aldri noe spesifikt organ for en definisjon, det holder bare definisjonen som implementeres riktig av underklassen senere.Sammendraget kan inneholde hele kroppen med definisjon, og kan også inneholde den eneste definisjon som grensesnitt som kan overstyres av alle underklasser. Enhver abstrakt klasse skal ha minst en abstrakt metode som bare inneholder definisjonsdetaljer, kroppen vil bli beskrevet senere i underklassen.
TilgangsmodifisererGrensesnitt har aldri noen tilgangsmodifiserer i sin definisjon. Grensesnitt anser normalt alle eiendommene som offentlige.En abstrakt klasse kan ha en tilgangsmodifiserer for sin definisjon. Så alle eiendommene kan være offentlige, private eller beskyttede.
OpptredenNormalt tatt litt mer tid å finne ut den tilsvarende underklasse-metoden.Det er litt raskere enn grensesnittet.

Konklusjon

Grensesnitt og abstrakt klasse brukes begge hovedsakelig for å håndtere flere implementeringer på en smart måte, slik at overflødig kode lett kan unngås og alt ligger i riktig hierarki og struktur. Grensesnittet vil alltid være bedre for å dele den samme signaturen i flere tilfeller. Anta at Pantaloons har en hovedgren, og den har også flere grener på et annet sted. Nå kan ett spesifikt produkt lanseres på et bestemt sted med en tilnærming, mens det på et annet sted lanseres i en annen tilnærming. I så fall, hvis forskjellig for samme produkt på flere steder, kan denne logikken bedre håndteres av grensesnittet. Nå for det samme produktet kan ha noen vanlige egenskaper som må fremheves i hver gren på tidspunktet for lansering av dette produktet. I det tilfellet, for å unngå kodedundans, legg til den samme logikken i den abstrakte klassen og kan brukes i flere implementeringer i forskjellige grener.

Anbefalt artikkel

Dette har vært en nyttig guide til Differences Between C # Abstract vs Interface her har vi diskutert sammenligning fra topp til hode, en viktig forskjell sammen med infografikk. Du kan også se på følgende artikkel for å lære mer -

  1. C # Interface vs Abstract Class
  2. Java-grensesnitt vs abstrakt klasse
  3. Typescript grensesnitt vs klasse
  4. TypeScript Type vs grensesnitt
  5. Få tilgang til modifikatorer i PHP
  6. Abstrakte klasser i JavaScript