Verschillen tussen abstracte klasse en interface in Java Verschil tussen

Anonim

Abstracte klasse versus interface te gebruiken in Java

Om de verschillen tussen de abstracte klasse en de interface in Java te begrijpen, is het belangrijk om eerst en vooral deze afzonderlijk te begrijpen. De abstracte klasse in Java wordt gebruikt voor het declareren van subklassen met een reeks gemeenschappelijke kenmerken. Het algemene gebruik van de abstracte klasse is een superklasse van andere klassen die het in feite mogelijk maakt om de abstracte klasse uit te breiden. Een abstract sleutelwoord wordt gebruikt in de verklaring van een abstracte klasse. Net zoals elke andere klasse zou hebben, heeft de abstracte klasse velden die methoden en kenmerken beschrijven die de klasse kan uitvoeren. Door de loutere verklaring van een abstracte klasse kan de klasse niet worden gestart

Een Java-interface kan worden gelijkgesteld aan een protocol. Het vertegenwoordigt een vooraf ingesteld en overeengekomen gedrag dat de interactie van niet-verwante objecten mogelijk maakt. Afhankelijk van de gebruiker bevat de interface de sleutel tot verschillende acties die worden uitgevoerd. De interface fungeert daarom als een schakel tussen de producent en de consument. Interfaces in Java zijn dus een groep van methoden met lege lichamen die een constante verklaring kunnen hebben. Bij het blootstellen van een klasse aan de Java-interface, betekent dit dat het gedrag dat van de klasse wordt verwacht de implementatie van alle methoden van de interface is.

Verschillen

Ten eerste maakt een abstracte klasse velden mogelijk die niet statisch of uiteindelijk zijn in tegenstelling tot de statische en laatste velden die in interfaces worden gebruikt. Op interfaces kan geen implementatiecode worden gebruikt en er kan implementatiecode worden gebruikt in de abstracte klasse. De implementatiecodes die in de abstracte klasse zijn geïmplementeerd, kunnen enkele of alle geïmplementeerde methoden bevatten. Standaard zijn alle methoden van de interface "abstract. “

Zichtbaarheid is ook mogelijk voor methoden of leden van een abstracte klasse die kunnen variëren, zoals openbaar, beschermd, privé of geen. De zichtbaarheid van de interface kan daarentegen alleen worden ingesteld op één zichtbaarheidsmodus die "openbaar" is. '"

Een abstracte klasse neemt de objectklasse automatisch over. Dit betekent in feite dat methoden zoals kloon () en equals () zijn inbegrepen. In een interface is er geen overerving van de objectklasse mogelijk. Hierna heeft de abstracte klasse de mogelijkheid om een ​​constructor te hebben, maar een interface kan die niet hebben.

De interface in Java heeft ook een zeer belangrijke functie bij de implementatie van meerdere overnamen, omdat een klasse maar één superklasse kan hebben. Hoewel er maar één superklasse aanwezig kan zijn, kan deze in een willekeurig aantal interfaces worden geïmplementeerd. Het is niet mogelijk om meerdere overnamen te hebben in een abstracte klasse.

In de prestaties hebben interfaces de neiging om langzamer te zijn in de implementatie dan in de abstracte klasse, voornamelijk vanwege de extra richting om de corresponderende methode in een klasse te vinden. Het verschil is echter langzamer geworden door moderne virtuele Java-machines die voortdurend worden geüpgraded.

Als u een methode in een interface toevoegt, moet u alle implementatieklassen die de specifieke interface implementeren, opsporen. U kunt ook de interface uitbreiden om extra methoden toe te staan. Als je toevallig te maken hebt met een abstracte klasse, volstaat het om de standaardimplementatie van de methode toe te voegen en de code blijft functioneren. In zoverre er verschillen bestaan ​​tussen abstracte klassen en interfaces, is het belangrijk om op te merken dat ze geen rivalen zijn, maar de hierin genoemde verschillen dienen om elkaar aan te vullen.

Samenvatting

  1. Abstracte klasse-velden zijn niet statisch of definitief in tegenstelling tot een interface met statische en definitieve tabellen.

  2. Er kan geen implementatiecode worden gebruikt in interfaces terwijl deze kan worden gebruikt in abstracte klasse.

  3. De zichtbaarheid van de interface kan alleen openbaar zijn, terwijl de zichtbaarheid van de abstracte klasse kan variëren.

  4. Een abstracte klasse neemt de objectklasse automatisch over, maar dit is niet mogelijk in de interface.

  5. Abstracte klasse is sneller dan interface bij implementatie.