Hva er forskjell mellom abstrakt klasse og grensesnitt i Java

Hva er forskjell mellom abstrakt klasse og grensesnitt i Java

Java gir flere måter å gi data abstraksjon på, for eksempel Java -grensesnitt og Java abstrakte klasser. Både grensesnitt og abstrakt klasse gir sikkerhet ved å skjule de interne implementeringsdetaljene og bare vise/fremheve de nødvendige detaljene. Imidlertid er det mange likheter og distinksjoner mellom abstrakte klasser og grensesnitt.

Dette innlegget vil hjelpe deg i de nedenfor-listede aspektene ved Java-grensesnitt og abstrakte klasser:

  1. Hva er et Java -grensesnitt.
  2. Hva er en Java -abstrakt klasse.
  3. Sammenligning basert på likheter.
  4. Java Abstract Class vs Java -grensesnitt.

Så la oss begynne!

Hva er et Java -grensesnitt

Det er en mal for en klasse som inneholder noen abstrakte metoder og statiske/endelige variabler. I Java gir grensesnitt bare metodedeklarasjon, mens barn/implementerte klasser gir metodedefinisjonen.

Hva er en Java -abstrakt klasse

Enhver Java -klasse som har minst en abstrakt (eneste metodedeklarasjon) -metode er kjent som en abstrakt klasse i Java.

Sammenligning basert på likheter

Noen viktige aspekter ved Java -grensesnitt og abstrakte klasser er listet opp nedenfor:

  • I Java kan vi ikke lage objektet/forekomsten av både grensesnitt eller abstrakte klasser.
  • Begge gir bare nødvendige detaljer til brukeren.
  • Begge gir abstraksjon.
  • Begge kan ha abstrakte metoder/funksjoner.
  • Begge skjuler implementeringsinformasjonen/detaljene fra brukerne.

Java Abstract Class vs Java -grensesnitt

Nøkkelordene "abstrakte" og "grensesnitt" brukes i Java for å lage/erklære de abstrakte klassene, og grensesnitt.

I grensesnitt anses alle medlemmer som offentlige som standard, så det er ikke nødvendig å spesifisere tilgangsmodifisereren for medlemmene av grensesnitt. Mens det er i abstrakte klasser er det ingen slik begrensning, og derfor kan noen tilgangsmodifiserer brukes til medlemmene i abstrakte klasser som offentlig, beskyttet osv.

Den grunnleggende syntaks for en abstrakt klasse og et grensesnitt er vist i de undergitte utdragene:

Abstrakt klasse

offentlig abstrakt klassenavn
public Abstract Void MethodName ();

Grensesnitt

offentlig grensesnitt grensesnitt
void MethodName ();

Grensesnittene må ha alle abstrakte metoder, mens de abstrakte klassene kan ha både abstrakte og ikke-abstrakte metoder.

Grensesnittet kan bare ha statiske medlemmer, mens abstrakte klasser kan ha statiske og ikke-statiske medlemmer.

Grensesnitt har bare "endelige" (uforanderlige) medlemmer mens abstrakte klasser kan ha endelige og ikke-endelige medlemmer.

Grensesnitt har ingen konstruktør mens abstrakte klasser har brukerdefinerte eller standardkonstruktører.

Flere arv kan oppnås ved hjelp av grensesnitt mens abstrakte klasser ikke støtter flere arv.

I Java kan den abstrakte klassen arve en annen klasse og kan implementere mange grensesnitt, derimot kan et Java -grensesnitt bare utvide et annet grensesnitt.

Eksempel

Det undergitte eksemplet lar deg forstå hvordan grensesnitt og abstrakte klasser fungerer i Java:

grensesnitt første interface
void MethodOne ();
void methodTwo ();
void methodthree ();

Abstract Class AbstractClass implementerer FirstInterface
public void methodthree ()
System.ute.Println ("Abstract Class Implementing Methodthree");


Class NormalClass utvider AbstractClass
public void methodOne ()
System.ute.println ("Implementering av metode");

public void methodTwo ()
System.ute.Println ("Implementering av metodTwo");

public void methodthree ()
System.ute.println ("Implementering av metodeThree");


Public Class InterfaceExample
public static void main (String [] args)
FirstInterface obj = new ClassThree ();
obj.metode ();
obj.MethodTwo ();
obj.Method Three ();

I dette eksemplet opprettet vi et grensesnitt “FirstInterface”, en abstrakt klasse “AbstractClass”, og ytterligere to normale Java -klasser og utførte følgende funksjonaliteter:

  • De FirstInterface inneholder tre abstrakte metoder.
  • De AbstractClass redskaper FirstInterface og overstyrer Method Three ().
  • De Normalklasse utvider AbstractClass og overstyrer metode () og MethodTwo () av FirstInterface.

De Grensesnitt er hovedklassen der vi opprettet hovedmetoden og påkalte alle metodene til FirstInterface:

Output bekreftet arbeidet med det ovennevnte Java-programmet.

Konklusjon

I Java kan abstraksjon oppnås ved bruk av abstrakte klasser og grensesnitt, og begge kan ikke bli instantiert. Imidlertid er det flere distinksjoner mellom abstrakte klasser og grensesnitt. For eksempel må grensesnittene ha alle abstrakte metoder mens de abstrakte klassene kan ha abstrakte og ikke-abstrakte metoder; Ved hjelp av grensesnitt kan flere arv oppnås mens abstrakte klasser ikke støtter flere arv osv. Dette innlegget forklarte ulike aspekter ved abstrakte klasser og grensesnitt ved hjelp av passende eksempler.