Skillnader mellan Java-gränssnitt kontra abstrakt klass

Ett gränssnitt anger vad en klass behöver göra men inte hur. Det är i grunden en plan för klassen. De variabler som deklareras i ett gränssnitt är som standard offentliga, statiska och slutliga. En klass som förklaras med nyckelord "abstrakt" kallas en abstrakt klass En klass som härleds från klassen Abstrakt måste definiera alla metoder som förklaras som abstrakta i en abstrakt klass.

Vad är gränssnitt?

Ett gränssnitt är som en klass men det är inte som kan ha metoder och variabler som klass men metoder som deklareras i ett gränssnitt är abstrakta som standard. Ett gränssnitt används för att tillhandahålla fullständig abstraktion eftersom metoder i gränssnitt inte har en kropp. Så de måste implementeras av klassen innan de försöker komma åt dem. I allmänhet måste en klass som implementerar gränssnitt definiera alla metoder som deklareras i ett gränssnitt om det inte är så måste klassen förklaras abstrakt. Vi kan inte utöka gränssnittet till mer än en klass eftersom Java inte tillåter det. För att förklara ett gränssnitt måste vi använda gränssnittsnyckelord och för att implementera gränssnittet vi behöver för att använda verktygsnyckelordet.

Vad är abstrakt?

En klass som förklaras med nyckelordet "abstrakt" kallas en abstrakt klass. En abstrakt klass kan ha abstrakt (metod utan kropp) och konkreta metoder (metod med en kropp), till skillnad från en vanlig klass. Abstrakt klass kan inte instanseras, dvs vi kan inte skapa ett objekt för det men kan ha referenser till abstrakt klass genom att skapa en annan klass som utökar den abstrakta klassen och ger implementering av metoder. Vi kan använda ett objekt av ett barn (som är nyligen skapat) för att kalla abstrakta och normala metoder. Det kan ha konstruktörer och abstrakt klass kallas när en ärvd klassinstans skapas. I Java kan vi ha en abstrakt klass utan abstrakt nyckelord, men dessa klasser kan inte instansieras, bara ärvs och kan också ha sista metoder.

Jämförelse mellan head-to-head mellan Java-gränssnitt kontra abstrakt klass (Infographics)

Nedan visas de 9 bästa jämförelserna mellan Java Interface vs Abstract Class

Viktiga skillnader mellan Java-gränssnitt kontra abstrakt klass

Både Java Interface vs Abstract Class är populära val på marknaden; låt oss diskutera några av de viktigaste skillnaderna mellan Java-gränssnitt kontra abstrakt klass:

  • Ett gränssnitt kan användas för att uppnå flera arv och lös koppling som vi inte kan uppnå av den abstrakta klassen.
  • Gränssnitt som används för att uppnå fullständig abstraktion medan en abstrakt klass kan uppnå partiell abstraktion.
  • En abstrakt klass utökar bara en normal klass eller abstrakt klass åt gången medan ett gränssnitt kan utöka vilket antal gränssnitt som helst.
  • En abstrakt klass utökar en annan abstrakt eller normal klass medan ett gränssnitt bara kan utöka ett annat Java-gränssnitt.
  • I en abstrakt klass måste vi förklara metoder med ”abstrakt” nyckelord medan vi i gränssnittet kan deklara metoder med eller utan det ”abstrakta” ​​nyckelordet.
  • Ett gränssnitt kan endast ha abstrakta metoder medan en abstrakt klass kan ha både abstrakta och normala klasser.
  • En abstrakt klass kan ha olika variabler som statiska, slutliga, icke-slutliga, icke-statiska, offentliga, privata etc. medan gränssnittet kan endast ha offentliga, statiska och slutliga variabler.
  • En abstrakt klass och dess metoder kan skapas med nyckelord "abstrakt" medan gränssnittsnyckelord används för att skapa gränssnitt men inte metoder.
  • En abstrakt klass kan ha konstruktörer medan gränssnittet inte har en konstruktör.
  • En abstrakt klass används för att definiera kontrakt, metodimplementeringar för underklass medan ett gränssnitt används för att definiera ett kontrakt för underklasser.
  • Ett gränssnitt kan bara utöka andra Java-gränssnitt medan en abstrakt klass kan utöka annan klass och implementera gränssnitt också.
  • En klass som utökar en abstrakt klass med hjälp av utökade nyckelord, måste implementera alla metoder som deklareras i abstrakt klass om inte en klass också är en abstrakt klass medan klass som implementerar gränssnittet med gränssnitt med nyckelord också ger en implementering för alla metoder som deklareras i gränssnittet.

Jämförelsetabell Java-gränssnitt kontra abstrakt klass

Följande är jämförelsetabellen mellan Java Interface vs Abstract Class

Grunden för jämförelse mellan Java-gränssnitt kontra abstrakt klassAbstrakt klassJava-gränssnitt
MetodtypEn abstrakt klass kan ha både abstrakta (metoder utan kropp) och icke-abstrakta (metoder med en kropp) metoderI gränssnittet kan vi bara ha abstrakta metoder. Från Java 8 kan gränssnittet också ha statiska och standardmetoder
SyntaxEn abstrakt klass kan förklaras enligt följande:
public abstract class school (Offentliga abstrakta ogiltiga klasser ();
public abstract void styrka ();)
Ett gränssnitt kan deklareras enligt följande:
public interface-form (Void draw_rect (); Void draw_square ();)
SlutvariabelEn abstrakt klass kan ha slutliga och icke-slutliga variabler.Medan gränssnittet endast kan ha slutliga variabler eftersom variabler som standard är slutliga i gränssnittet.
GenomförandeEn abstrakt klass kan tillhandahålla implementering av alla abstrakta metoder i gränssnittet.Medan vi inte kan tillhandahålla implementering av en abstrakt klass i gränssnittet.
Variabel typEn abstrakt klass kan alla typer av variabler, dvs slutlig, icke-slutlig, statisk, icke-statisk, privat, offentlig etc.Medan gränssnittet endast kan ha offentliga, statiska och slutliga variabler.
Data medlemmar TillgänglighetEn abstrakt klass har kan ha klassmedlemmar som privata, skyddade, offentliga etc.Ett gränssnitt kan endast ha offentliga klassmedlemmar eftersom gränssnittsdata är offentliga som standard.
Arv kontra abstraktionEn abstrakt klass kan utvidgas med hjälp av nyckelordet "extends" och måste tillhandahålla implementeringen av alla deklarerade metoder i moderklassen eller abstrakt klassEtt gränssnitt kan implementeras med hjälp av nyckelordet "gränssnitt" och måste tillhandahålla implementeringen för alla metoder som deklareras i gränssnittet
Flera implementeringarEn abstrakt klass kan utöka en annan Java-klass implementerar flera gränssnittEtt gränssnitt kan bara utöka ett annat gränssnitt.
När du ska använda denEn abstrakt klass måste användas när vissa klasser behöver dela några rader kod, då kan vi lägga dessa koder i en abstrakt klass och utvidga med alla relaterade klasser.Ett gränssnitt kan användas när vi behöver uppnå flera arv, full abstraktion genom att implementera alla metoder som deklarerats i ett gränssnitt av en klass som implementerar gränssnittet.

Slutsats - Java Interface vs Abstract Class

Slutligen är det en översikt över skillnaden mellan Java Interface vs Abstract Class. Jag hoppas att du kommer att få en bättre förståelse av dessa begrepp Java Interface vs Abstract Class. Baserat på våra krav kan vi använda både Java Interface vs Abstract Class tillsammans, endast gränssnitt och endast abstrakt klass också. Men att använda gränssnitt och abstrakt klass tillsammans är det bästa sättet att designa. När en klass behöver dela någon kod kan vi placera den koden i den abstrakta klassen och när ett tillstånd av ett objekt krävs kan vi få genom att definiera icke-statiska eller icke-slutliga fält kan vi använda en abstrakt klass. Vi kan använda gränssnittet när vi behöver fullständig abstraktion, multipel arv och lös koppling.

Rekommenderad artikel

Detta har varit en guide till de bästa skillnaderna mellan Java Interface vs Abstract Class. Här diskuterar vi också Java-gränssnittet vs abstrakt klass nyckelskillnader med infographics och jämförelse tabell. Du kan också titta på följande artiklar -

  1. Hur användbar är C # intervjufrågor och svar?
  2. 8 Användbar jämförelse-HTML5 vs Flash
  3. Java vs C # - 8 viktiga skillnader
  4. Ruby vs Node
  5. HTML5 jämfört med JavaScript Jämförelse
  6. ArrayList vs Java Vector

Kategori: