Forskjeller mellom abstrakt klasse og grensesnitt i Java Forskjellen mellom

Anonim

Abstrakt klasse vs grensesnitt i Java

For å forstå forskjellene mellom abstrakt klassen og grensesnittet i Java, er det viktig å først og fremst forstå hver av disse selvstendig. Den abstrakte klassen i Java brukes i deklarasjon av underklasser med et sett av fellesegenskaper. Den vanlige bruken av den abstrakte klassen er en super klasse av andre klasser som i virkeligheten tillater det å forlenge abstrakte klassen. Et abstrakt søkeord brukes i deklarasjonen av en abstrakt klasse. Akkurat som en annen klasse ville ha, har abstraktklassen felt som beskriver metoder og karaktertrekk som klassen kan utføre. Ved bare erklæringen av en abstrakt klasse kan ikke klassen påbegynnes

Et Java-grensesnitt kan likestilles med en protokoll. Den representerer en forhåndsinnstilt og avtalt oppførsel som muliggjør forenkling av samspillet mellom ikke-relaterte objekter. Avhengig av brukeren holder grensesnittet nøkkelen til ulike handlinger som implementeres. Grensesnittet tjener derfor som en kobling mellom produsent og forbruker. Grensesnitt i Java er således en gruppe metoder som inneholder tomme legemer som kan ha konstante erklæringer. Ved å utsette en klasse for Java-grensesnittet betyr det at oppførselen som forventes av klassen, er implementeringen av alle grensesnittets metoder.

Forskjeller

For det første lar en abstrakt klasse for felt som ikke er statiske eller endelige i motsetning til de statiske og endelige feltene som brukes i grensesnitt. Grensesnitt kan ikke ha noen implementeringskode brukt i dem, og det kan være implementeringskode som brukes i abstrakt klasse. Implementeringskodene utrullert i abstraktklassen kan ha noen eller alle de implementerte metodene. Som standard er alle grensesnittets metoder "abstrakte". “

Synlighet er også mulig for metoder eller medlemmer av en abstrakt klasse som kan variere som offentlig, beskyttet, privat eller ingen. Grensesnittets synlighet kan derimot kun forhåndsinnstilles til en synlighetsmodus som er "offentlig". ''

En abstrakt klasse vil automatisk arve objektklassen. Dette betyr faktisk at metoder som klon () og like () er inkludert. I et grensesnitt er ingen arv av objektklassen mulig. Etter dette har den abstrakte klassen muligheten til å ha en konstruktør, men et grensesnitt kan ikke ha en.

Grensesnittet i Java har også en svært viktig funksjon med implementering av flere arv siden en klasse kan bare ha en superklasse. Selv om bare en superklasse kan være til stede, kan den implementeres i uansett antall grensesnitt. Det er ikke mulig å ha flere arv i en abstrakt klasse.

Grensesnitt pleier å være langsommere i implementering i motsetning til abstrakt klasse, hovedsakelig på grunn av den ekstra retningen for å finne den tilsvarende metoden i en klasse. Forskjellen er imidlertid blitt langsommere på grunn av moderne Java virtuelle maskiner som kontinuerlig blir oppgradert.

Når du legger til en metode i et grensesnitt, må du spore alle implementeringsklassene som implementerer det spesifikke grensesnittet. Alternativt kan du utvide grensesnittet slik at det kan ha ekstra metoder. Hvis du har å gjøre med en abstrakt klasse, er alt som kreves å legge til standard implementering av metoden, og koden fortsetter å virke. I det omfang det er forskjeller mellom abstrakte klasser og grensesnitt, er det viktig å merke seg at de ikke er rivaler, men forskjellene nevnt her tjener til å utfylle hverandre.

Sammendrag

  1. Abstrakte klassefelt er ikke statiske eller endelige i motsetning til grensesnittet som har statiske og endelige tabeller.

  2. Ingen implementeringskode kan brukes i grensesnitt mens den kan brukes i abstrakt klasse.

  3. Grensesnittets synlighet kan bare være offentlig, mens abstrakt klassesynlighet kan variere.

  4. En abstrakt klasse vil automatisk arve objektklassen, men det er ikke mulig i grensesnittet.

  5. Abstrakt klasse er raskere enn grensesnitt i implementering.