Verschil tussen interface en abstracte klasse in Java

Belangrijkste verschil: een interface of een protocol is een veelgebruikte manier om niet-gerelateerde objecten met elkaar te laten communiceren. Het vertegenwoordigt een afgesproken gedrag dat de interactie tussen de twee objecten mogelijk maakt. Een abstracte klasse is een klasse van objecten die niet kan worden geïnstantieerd of een instantie van een object kan instellen. Deze klasse heeft mogelijk geen implementatie of kan een onvolledige implementatie hebben.

Java, C ++, C # zijn allemaal gecompliceerde programmeertalen die een gedetailleerde studie en inzicht vereisen om mee te kunnen werken. Er zijn veel verschillende methoden die in deze talen worden gebruikt die bepalen hoe de taal zal werken. Interface en abstracte klasse zijn twee verwarrende concepten die deel uitmaken van OOP (object-oriented programming). Deze twee kunnen afzonderlijk of samen met elkaar worden gebruikt. Deze twee zijn compleet verschillend van elkaar en worden in verschillende gevallen gebruikt.

Java is een programmeertaal die is beïnvloed door de C-taal. Het ontleent veel van de syntaxis van C en C ++, maar het heeft minder faciliteiten op laag niveau dan beide. Java is een algemene programmeertaal die is ontworpen om minder implementatieafhankelijkheden te hebben in vergelijking met eerdere talen. Het is een gelijktijdige, op klassen gebaseerde en een objectgerichte taal.

Java is ontwikkeld door James Gosling van Sun Microsystems en werd uitgebracht in 1995. Oorspronkelijk werd het uitgebracht als een kerncomponent van het Java-platform van Sun Microsystems. Sun heeft sindsdien de meeste van haar Java-technologieën opnieuw gelicentieerd onder de GNU General Public License. Dit betekent dat alle technologie waarvoor een licentie is verleend onder GNU General Public License open source is en algemeen gratis beschikbaar is. Sun Microsystems is uiteindelijk samengevoegd tot Oracle Corporation. Vanaf 2012 is Java een van de meest populaire programmeertalen voor gebruik geworden. Dit geldt met name voor client-server webapplicaties. Veel andere systemen hebben alternatieve implementaties van Sun-technologieën ontwikkeld, zoals GNU Compiler voor Java en GNU Classpath.

Interface of een protocol is een gebruikelijke manier om niet-gerelateerde objecten met elkaar te laten communiceren. Het vertegenwoordigt een afgesproken gedrag dat de interactie tussen de twee objecten mogelijk maakt. De interface bevat de sleutel tot de verschillende acties die worden geïmplementeerd en dient als een koppeling tussen de twee verschillende objecten. Als een klasse objecten wordt blootgesteld aan de interface, moet de klasse het gedrag volgen dat door de interface wordt geïmplementeerd. Gewoonlijk bevatten interfaces alleen constante verklaringen en handtekeningen van methoden. Elke interface die een bepaalde interface implementeert, moet alle in de interface genoemde methoden toepassen of worden gedeclareerd als een abstracte klasse. In Java kan elk object worden gedefinieerd als een interface, als dat object null is of een klasse bevat waarin het die specifieke interface implementeert. Men kan meerdere interfaces implementeren in een enkele klasse in Java met behulp van implementatietrefwoorden.

Een abstracte klasse is een klasse van objecten die niet kan worden geïnstantieerd of een instantie van een object kan instellen. Deze klasse heeft mogelijk geen implementatie of kan een onvolledige implementatie hebben. Het kan ook abstracte methoden of eigenschappen hebben die door alle subklassen worden gedeeld. In sommige programmeertalen staan ​​abstracte typen zonder implementatie bekend als interfaces. In Java kan een abstract type worden gemaakt met het sleutelwoord 'abstract' in de klassendefinitie. Het doel van het hebben van een abstracte klasse om alle methoden die niet zijn geïmplementeerd in de abstracte klasse te plaatsen en deze naar de subklasse te laten om te bepalen hoe deze klassen moeten worden geïmplementeerd. Als een klasse één abstracte methode heeft, moet de klasse worden gedeclareerd als een abstracte klasse, hoewel het niet nodig is om ten minste één methode te hebben om een ​​klassenamenvatting te declareren.

Malliktalksjava.in vermeldt de belangrijkste verschillen tussen interface en abstract als:

  • De abstracte klasse heeft de constructor, maar de interface niet.
  • Abstracte klassen kunnen implementaties hebben voor sommige van de leden (methoden), maar de interface kan geen implementatie hebben voor een van zijn leden.
  • Abstracte klassen zouden subklassen anders moeten bevatten die nutteloos zijn.
  • Interfaces moeten implementaties hebben van andere klassen anders die nutteloos zijn
  • Alleen een interface kan een andere interface uitbreiden, maar elke klasse kan een abstracte klasse uitbreiden.
  • Alle variabelen in interfaces zijn standaard definitief
  • Interfaces bieden een vorm van meerdere overerving. Een klasse kan slechts één andere klasse uitbreiden.
  • Interfaces zijn beperkt tot openbare methoden en constanten zonder implementatie. Abstracte klassen kunnen een gedeeltelijke implementatie hebben, beschermde delen, statische methoden, enz.
  • Een klasse kan verschillende interfaces implementeren. Maar in het geval van een abstracte klasse kan een klas slechts één abstracte klasse uitbreiden.
  • Interfaces zijn traag omdat het extra indirectie vereist om de corresponderende methode in de eigenlijke klasse te vinden. Abstracte lessen zijn snel.
  • Toegankelijkheidsmodificator (openbaar / privé / intern) is toegestaan ​​voor abstracte klasse. Interface staat toegankelijkheidsmodificator niet toe
  • Een abstracte klasse kan complete of onvolledige methoden bevatten. Interfaces kunnen alleen de handtekening van een methode bevatten, maar geen hoofdtekst. Een abstracte klasse kan dus methoden implementeren, maar een interface kan geen methoden implementeren.
  • Een abstracte klasse kan velden, constructors of destructors bevatten en eigenschappen implementeren. Een interface mag geen velden, constructors of destructors bevatten en heeft alleen de handtekening van de property, maar geen implementatie.
  • Verschillende toegangsmodificatoren zoals abstract, beschermd, intern, openbaar, virtueel, enz. Zijn nuttig in abstracte klassen, maar niet in interfaces.
  • Abstract bereik is tot afgeleide klasse.
  • Interfacebereik is van elk niveau van zijn overervingsketen.

De informatie voor de tabel is de beleefdheid van codeproject.com en mindprod.com

Interface

Abstracte klasse

Meerdere overerving

Een klasse kan verschillende interfaces erven.

Een klasse kan slechts één abstracte klasse erven.

Standaard implementatie

Een interface kan geen code bieden, alleen de handtekening.

Een abstracte klasse kan volledige, standaardcode en / of alleen de details leveren die moeten worden genegeerd.

Toegangsmodificaties

Een interface kan geen toegangsmodificators hebben voor de subs, functies, eigenschappen etc. alles wordt als openbaar beschouwd.

Een abstracte klasse kan toegangsmodifiers bevatten voor de subs, functies en eigenschappen.

Core vs. Peripheral

Interfaces worden gebruikt om de perifere mogelijkheden van een klasse te definiëren. Met andere woorden, zowel Mens als Voertuig kunnen erven van een IMovable interface.

Een abstracte klasse definieert de kernidentiteit van een klasse en wordt daar gebruikt voor objecten van hetzelfde type.

homogeniteit

Als verschillende implementaties alleen methodenhandtekeningen delen, is het beter om interfaces te gebruiken.

Als verschillende implementaties van dezelfde soort zijn en een gemeenschappelijk gedrag of status gebruiken, dan is abstracte klasse beter te gebruiken.

Snelheid

Vereist meer tijd om de eigenlijke methode in de overeenkomstige klassen te vinden.

Snel

Functionaliteit toevoegen

Als we een nieuwe methode aan een interface toevoegen, moeten we alle implementaties van de interface opsporen en de implementatie voor de nieuwe methode definiëren.

Als we een nieuwe methode toevoegen aan een abstracte klasse, hebben we de mogelijkheid om standaardimplementatie te bieden en daarom zou alle bestaande code correct kunnen werken.

Velden en constanten

Er kunnen geen velden worden gedefinieerd in interfaces.

In een abstracte klasse kunnen velden en constanten worden gedefinieerd.

terseness

De constante verklaringen in een interface zijn allemaal veronderstelde openbare statische finale.

Gedeelde code kan worden toegevoegd in een abstracte klasse.

constanten

Alleen statische eindconstanten kunnen deze zonder kwalificatie gebruiken in klassen die de interface implementeren.

Zowel een instantie als statische constanten zijn mogelijk. Zowel statische als instance intialiser-code zijn ook mogelijk om de constanten te berekenen.

Gemak van derden

Een interface-implementatie kan aan elke bestaande klasse van derden worden toegevoegd.

Een klasse van derden moet worden herschreven om alleen uit de abstracte klasse te worden uitgebreid.

is-een-kan of kan

Interfaces worden vaak gebruikt om de perifere capaciteiten van een klasse te beschrijven, niet de centrale identiteit ervan. Een klasse Automobile kan bijvoorbeeld de Recyclebare interface implementeren, die van toepassing zou kunnen zijn op veel anderszins totaal niet-gerelateerde objecten.

Een abstracte klasse definieert de kernidentiteit van zijn afstammelingen. Geïmplementeerde interfaces inventariseren de algemene dingen die een klasse kan doen, niet de dingen die een klasse is.

In een Java-context zouden gebruikers de Runnable-interface moeten implementeren in plaats van Thread uit te breiden, omdat ze niet echt geïnteresseerd zijn in wat nieuwe Thread-functionaliteit, ze willen gewoon dat sommige code de mogelijkheid hebben om onafhankelijk te werken. Ze willen iets maken dat in een thread kan worden uitgevoerd, niet een nieuw soort thread. Hetzelfde is-a tegen-een debat komt naar voren wanneer je besluit te erven of te delegeren.

Inpluggen

De gebruiker kan een nieuwe vervangende module schrijven voor een interface die niet één code bevat die overeenkomt met de bestaande implementaties. Wanneer de gebruiker de interface implementeert, beginnen ze helemaal opnieuw zonder enige standaardimplementatie. De gebruiker moet hulpmiddelen van andere klassen verkrijgen; niets komt met de interface anders dan een paar constanten. Dit geeft de gebruiker de vrijheid om een ​​radicaal ander intern ontwerp te implementeren.

De gebruiker moet de abstracte klasse gebruiken zoals deze is voor de codebasis, met al zijn begeleidende bagage, goed of slecht. De auteur van de abstracte klasse heeft structuur opgelegd aan de gebruiker.

Onderhoud

Als de clientcode alleen in termen van een interface spreekt, kunt u eenvoudig de concrete implementatie erachter veranderen met behulp van een fabrieksmethode.

Als de clientcode alleen in termen van een abstracte klasse spreekt, kunt u de concrete implementatie erachter eenvoudig wijzigen met behulp van een fabrieksmethode.

Aanbevolen

Gerelateerde Artikelen

  • populaire vergelijkingen: Verschil tussen Otter en Seal

    Verschil tussen Otter en Seal

    Belangrijk verschil: zeehonden staan ​​meestal bekend om hun slanke en slanke lichamen met korte, brede, platte zwemvliezen. In tegenstelling tot de zeehonden hebben otters lange, slanke lichamen met relatief korte ledematen. Ze hebben ook poten met zwemvliezen met scherpe klauwen, in tegenstelling tot de vinnen op zeehonden. Ot
  • populaire vergelijkingen: Verschil tussen Shop en Shoppe

    Verschil tussen Shop en Shoppe

    Belangrijkste verschil: er is geen bepaald verschil in de definitie van het woord 'shop' en 'shoppe'. Het heeft echter een klein verschil in gebruik. Hoewel winkels worden gebruikt om naar elke plaats te verwijzen die een service of product op maat aanbiedt, wordt 'shoppe' gebruikt om naar high-end winkels te verwijzen die hoogwaardige producten en prijzen aanbieden
  • populaire vergelijkingen: Verschil tussen werk, werk en bedrijf

    Verschil tussen werk, werk en bedrijf

    Belangrijkste verschil: werk is iets dat mensen doen in ruil voor geld, zoals een salaris. Een baan is vaak van korte duur en wordt alleen gedaan als iemand geld nodig heeft om te leven. In sommige bedrijven heeft men vaak een baan. Een bedrijf, onderneming of bedrijf is een organisatie die actief betrokken is bij commerciële, industriële of professionele activiteiten.
  • populaire vergelijkingen: Verschil tussen MB en GB

    Verschil tussen MB en GB

    Belangrijk verschil: één GB is 1024 MB groot. Eén MB vormt 1024 KB. Gigabyte (GB) en Megabyte (MB) zijn veelvouden van de eenheidbyte voor digitale informatieopslag of verzending. Elke GB en MB kan verschillende hoeveelheden gegevens opslaan. Eén GB kan 1024 MB aan gegevens opslaan. Eén MB kan 1024 KB aan gegevens opslaan. Eén
  • populaire vergelijkingen: Verschil tussen Hallo en Hallo

    Verschil tussen Hallo en Hallo

    Belangrijkste verschil: 'Hallo' en 'Hallo' zijn twee veelgebruikte vormen van begroeting. Ze zijn allebei synoniem. Hallo wordt echter beschouwd als meer formeel dan Hallo. Gesprek is een belangrijk ingrediënt van iemands sociale leven. Mensen willen graag met elkaar omgaan om hun mening, meningen en gedachten te uiten.
  • populaire vergelijkingen: Verschil tussen Metro en lokale trein

    Verschil tussen Metro en lokale trein

    Belangrijkste verschil: een lokale trein is gedefinieerd als een effectieve manier van vervoer voor reisafstanden binnen de stad en het verbinden van de buitenwijken. Het rijdt op gelegde railsbanen die kunnen worden gedeeld door goederentreinen of andere langeafstandstreinen; overwegende dat de metro een trein is die specifiek is ontworpen om in grootsteden te rijden en over onafhankelijke spoorrails beschikt; Zowel de lokale trein als de metro kunnen worden gedefinieerd als een effectieve manier van vervoer voor reisafstanden binnen de stad en het verbinden van de buitenwijken
  • populaire vergelijkingen: Verschil tussen schuldig, schuld en schuld

    Verschil tussen schuldig, schuld en schuld

    Belangrijk verschil : een fout is een fout die wordt veroorzaakt door onwetendheid of slecht beoordelingsvermogen van een persoon. Als iemand iets verkeerds of illegaals heeft gedaan, voelt hij zich er schuldig over. De schuld is simpelweg verklaren dat iemand of iets verantwoordelijk is voor iets verkeerds of een fout maakt
  • populaire vergelijkingen: Verschil tussen hindernis en obstakel

    Verschil tussen hindernis en obstakel

    Belangrijk verschil: de twee woorden horde en hindernis zijn aan elkaar gerelateerd, maar een hindernis is een barrière die moet worden gepasseerd, terwijl een obstakel een blok is tussen de taak. De betekenis van horde is 'een rechtopstaand frame, typisch een van een reeks waar atleten in een race overheen moeten springen'.
  • populaire vergelijkingen: Het verschil tussen MS Office Student en Professional

    Het verschil tussen MS Office Student en Professional

    Belangrijkste verschil: de bundel Office Home en Student biedt MS Word, MS Excel, MS PowerPoint en MS OneNote. Dit pakket is ook het goedkoopste pakket van alle drie. De prijs van het studentenpakket van 2010 varieert van $ 100 tot $ 150. De Office Professional biedt al het bovenstaande, inclusief MS Access, MS Outlook en MS Publisher en de prijs voor de bundel ligt tussen de $ 350 en $ 500

Editor'S Choice

Verschil tussen Chinees en Koreaans

Belangrijkste verschil: China is een heel groot land met veel talen en subrassen. Chinezen zijn de mensen die in China leven. Aan de andere kant is Korea een klein land in vergelijking met China. Koreanen zijn de mensen die in Noord-Korea of ​​Zuid-Korea wonen en het wordt ook gebruikt als de officiële taal. Je