Verschil tussen Final, Final en Finalize in Java

Schrijver: Laura McKinney
Datum Van Creatie: 2 April 2021
Updatedatum: 13 Kunnen 2024
Anonim
DIFFERENCE BETWEEN FINAL, FINALLY AND FINALIZE IN JAVA | INTERVIEW QUESTION
Video: DIFFERENCE BETWEEN FINAL, FINALLY AND FINALIZE IN JAVA | INTERVIEW QUESTION

Inhoud


De woorden 'definitief, eindelijk en definitief' liggen binnen de con van Java. Elk van hen krijgt een ander functioneren. Het fundamentele verschil tussen final, final en finalize is dat laatste is een toegangsmodificator, Tenslotte is een blok en afronden is een methode van een objectklasse. Er zijn enkele andere verschillen tussen final, final en finalize die worden besproken in de vergelijkingstabel.

  1. Vergelijkingstabel
  2. Definitie
  3. Belangrijkste verschillen
  4. Gevolgtrekking

Vergelijkingstabel

Basis voor vergelijkingLaatsteTenslotteAfronden
basis-Finaal is een "trefwoord" en "toegangsmodificator" in Java.Eindelijk is een "blok" in Java.Finalize is een "methode" in Java.
Van toepassingFinaal is een trefwoord dat van toepassing is op klassen, variabelen en methoden.Eindelijk is een blok dat altijd wordt geassocieerd met try and catch-blok.finalize () is een methode die van toepassing is op objecten.
Werken(1) De laatste variabele wordt constant en kan niet opnieuw worden toegewezen.
(2) Een definitieve methode kan niet worden genegeerd door de kindklasse.
(3) Final Class kan niet worden verlengd.
Een "eindelijk" -blok, ruim de bronnen op die worden gebruikt in het "probeer" -blok.De methode Finalize voert opruimactiviteiten uit die betrekking hebben op het object voordat het wordt vernietigd.
UitvoeringLaatste methode wordt uitgevoerd op zijn oproep."Eindelijk" blok wordt uitgevoerd net na de uitvoering van het "try-catch" -blok.De methode finalize () wordt uitgevoerd net vóór de vernietiging van het object.


Definitie van finale

"Final" is een trefwoord in Java. Het is een toegangsmodificator. Het "laatste" trefwoord is van toepassing op de klassen, methoden en variabelen. Laten we eens kijken hoe het met elk van hen werkt.

Laatste variabele

  • Wanneer een laatste trefwoord op de variabele wordt toegepast, kan dit niet verder worden gewijzigd.
  • Een definitieve variabele moet worden geïnitialiseerd wanneer deze wordt gedeclareerd.
  • In een algemene coderingsconventie worden definitieve variabelen in HOOFDLETTERS gedeclareerd.
  • De laatste variabele neemt niet per geval geheugen in beslag.

final int FILE_OPEN = 2;

Laatste methoden

  • Wanneer een methode in de klasse als definitief wordt verklaard, kan deze niet worden overschreven door de subklasse.
  • Kleine methoden die definitief worden verklaard, kunnen door de compiler 'inline' worden gemaakt, waardoor de overhead van functieaanroepen wordt verminderd en de prestaties worden verbeterd.
  • Overschreven methoden die worden aangeroepen, worden dynamisch opgelost, maar wanneer een methode als definitief wordt verklaard, kan deze niet worden genegeerd. Daarom kan de functie-aanroep tijdens het compileren worden opgelost.

class A {final void meth () {System.out.ln ("Dit is een laatste methode."); }} klasse B verlengt A {void meth () {// Clas B kan de methode van klasse A niet erven. System.out.ln ("Overschrijft niet"); }}

Laatste les

  • Wanneer een klasse als definitief wordt verklaard, kan deze door geen enkele subklasse worden overgenomen.
  • Als een klas als definitief wordt verklaard, worden alle methoden automatisch als definitief verklaard.
  • Je kunt een klasse niet zowel als 'abstract' als 'definitief' verklaren.

laatste klasse A {// ...} klasse B verlengt A {// Klasse B kan klasse A // ... niet erven

  • In Java is “eindelijk” een blok dat altijd wordt geassocieerd met het try / catch-blok.
  • Het "eindelijk" -blok wordt uitgevoerd na het try / catch-blok en vóór de code die volgt op het try / catch-blok.
  • Het "eindelijk" -blok zal worden uitgevoerd of de uitzondering wordt gegenereerd of niet.
  • Wanneer een uitzondering wordt gegenereerd en er zelfs dan geen catch-blok overeenkomt met de uitzondering, wordt het "eindelijk" -blok uitgevoerd.
  • Wanneer een methode terugkeert naar de beller vanuit het try / catch-blok via een niet-ingevangen uitzondering of een expliciete return-instructie, wordt het "eindelijk" -blok uitgevoerd net voordat de methode terugkeert naar de beller.
  • Het "eindelijk" -blok wordt gebruikt om de bronnen op te schonen of het geheugen vrij te maken dat in het "probeer" -blok wordt gebruikt.
  • Het "eindelijk" -blok is optioneel, maar het is een goede gewoonte om eindelijk een blok te schrijven na het try / catch-blok.

class SlotExample {// Deze methode gooit een uitzondering uit de methode. static void procA () {probeer {System.out.ln ("inside procA"); gooi nieuwe RuntimeException ("demo"); } eindelijk {System.out.ln ("procAs eindelijk"); }} // Terug vanuit een try-blok. statische void procB () {probeer {System.out.ln ("inside procB"); terug te keren; } eindelijk {System.out.ln ("procBs eindelijk"); }} // Voer een try-blok normaal uit. static void procC () {probeer {System.out.ln ("inside procC"); } eindelijk {System.out.ln ("procCs eindelijk"); }} public static void main (String args) {try {procA (); } catch (uitzondering e) {System.out.ln ("Exception gevangen"); } procB (); procC (); }} // output in procA procA's eindelijk Uitzondering gevangen in procB procB's eindelijk in procC procC's eindelijk

Definitie van Voltooien

  • Finaliseren is een methode in een objectklasse.
  • Een object kan bepaalde niet-Java-bronnen bevatten, zoals file handle; dan moet het worden bevrijd voordat het wordt vernietigd.
  • Deze methode wordt door de afvalverzamelaar aangeroepen voordat het het object volledig vernietigt.
  • Deze methode voert opruimactiviteiten uit voor het object voordat het wordt vernietigd.

De algemene vorm van de methode finalize () is als volgt.


beschermde nietige finalize () {// finalisatiecode hier}

De finalize-methode wordt als beveiligd verklaard, zodat deze niet van buiten de klas toegankelijk is.

Deze methode wordt altijd aangeroepen vóór de afvalinzameling.

  1. Het sleutelwoord final is een toegangsmodificator, eindelijk een blok en finalize is een methode.
  2. Het sleutelwoord final is van toepassing op de klassen, variabelen en methoden van de klassen, ten slotte is een blok geassocieerd met het try-catch-blok dat wordt gebruikt om uitzonderingen af ​​te handelen, finalize is een methode die alleen op objecten werkt.
  3. De variabele die eenmaal als definitief is gedeclareerd, wordt constant en kan niet opnieuw worden toegewezen, een methode die als definitief wordt verklaard, kan niet worden overschreven en klasse die eenmaal als definitief is verklaard, kan nooit worden overgenomen. Het slot block wordt gebruikt om de bronnen op te ruimen die worden gebruikt door het try and catch-blok. De methode finaliseren wordt gebruikt om de bronnen op te ruimen die door een object worden gebruikt voordat het object wordt vernietigd.

Gevolgtrekking:

Final, final en finalize heeft een ander effect wanneer het op een methode wordt toegepast.