Recommandé, 2021

Choix De L'Éditeur

Différence entre Final, Finally et Finalize en Java

Les mots "final, finalement et finalize" se situent dans le contexte de Java. Chacun d'entre eux est pourvu d'un fonctionnement différent. La différence fondamentale entre final, final et finalize est que final est un modificateur d'accès, enfin un bloc et finalize est une méthode de classe d'objet. Il existe d'autres différences entre final, final et finalize, qui sont décrites dans le tableau de comparaison.

Tableau de comparaison

Base de comparaisonFinalfinalementFinaliser
De baseFinal est un "mot clé" et un "modificateur d'accès" en Java.Enfin est un "bloc" en Java.Finalize est une "méthode" en Java.
En vigueurFinal est un mot clé applicable aux classes, variables et méthodes.Enfin, un bloc est toujours associé au bloc try and catch.finalize () est une méthode applicable aux objets.
Travail(1) La variable finale devient constante et ne peut pas être réaffectée.
(2) Une méthode finale ne peut pas être remplacée par la classe enfant.
(3) La classe finale ne peut être prolongée.
Un bloc "enfin", nettoie les ressources utilisées dans le bloc "try".La méthode Finalize effectue des activités de nettoyage liées à l’objet avant sa destruction.
ExécutionLa méthode finale est exécutée lors de son appel.Le bloc "Finally" est exécuté juste après l'exécution du bloc "try-catch".La méthode finalize () s'exécute juste avant la destruction de l'objet.

Définition de finale

"Final" est un mot clé en Java. C'est un modificateur d'accès. Le mot clé "final" s'applique aux classes, méthodes et variables. Voyons comment cela fonctionne avec chacun d'eux.

Variable finale

  • Lorsqu'un mot-clé final est appliqué à la variable, il ne peut plus être modifié.
  • Une variable finale doit être initialisée lors de sa déclaration.
  • Dans une convention de codage commune, les variables finales sont déclarées dans UPPERCASE.
  • La variable finale n'occupe pas de mémoire par instance.
 final int FILE_OPEN = 2; 

Méthodes finales

  • Lorsqu'une méthode de la classe est déclarée finale, elle ne peut pas être remplacée par sa sous-classe.
  • Les petites méthodes déclarées finales peuvent être configurées «en ligne» par le compilateur, ce qui permet de réduire le temps système lié aux appels de fonctions et d’améliorer les performances.
  • Les méthodes ignorées appellent, sont résolues dynamiquement, mais lorsqu'une méthode est déclarée comme finale, elle ne peut pas être remplacée. Par conséquent, l'appel de fonction peut être résolu au moment de la compilation.
 class A {void final meth () {System.out.println ("Ceci est une méthode finale."); }} classe B étend A {void meth () {// La classe B ne peut pas hériter de la méthode de la classe A. System.out.println ("N'écrase pas"); }} 

Classe finale

  • Lorsqu'une classe est déclarée comme finale, elle ne peut être héritée d'aucune sous-classe.
  • Déclarer une classe en tant que finale déclarera automatiquement toutes ses méthodes finales.
  • Vous ne pouvez pas déclarer une classe à la fois «abstraite» et «finale».
 classe finale A {// ...} la classe B étend A {// la classe B ne peut pas hériter de la classe A // ...} 

Définition de Finally

  • En Java, «finally» est un bloc qui est toujours associé au bloc try / catch.
  • Le bloc «finally» est exécuté après le bloc try / catch et avant le code suivant le bloc try / catch.
  • Le bloc «finally» sera exécuté que l'exception soit levée ou non.
  • Lorsqu'une exception est levée et qu'aucun bloc catch ne correspond à l'exception, le bloc «finally» est exécuté.
  • Lorsqu'une méthode retourne à l'appelant depuis le bloc try / catch via une exception non interceptée ou une instruction de retour explicite, le bloc «finally» est exécuté juste avant le retour de la méthode à l'appelant.
  • Le bloc «finally» est utilisé pour nettoyer les ressources ou libérer la mémoire utilisée dans le bloc «try».
  • Le bloc «finally» est facultatif, mais il est recommandé d'écrire bloc final après le bloc try / catch.
 class FinallyExample {// Cette méthode lève une exception en dehors de la méthode. statique void procA () {try {System.out.println ("inside procA"); lancer une nouvelle RuntimeException ("demo"); } finally {System.out.println ("procA's finally"); }} // Retour depuis un bloc try. static void procB () {try {System.out.println ("dans procB"); revenir; } finally {System.out.println ("procB's finally"); }} // Exécuter un bloc try normalement. statique void procC () {try {System.out.println ("dans procC"); } finally {System.out.println ("procC's finally"); }} public static void main (String args []) {try {procA (); } catch (Exception e) {System.out.println ("Exception catch"); } procB (); procC (); }} // sortie à l'intérieur de procA enfin à procA Une exception interceptée à l'intérieur de procB enfin à procB enfin à procC procC enfin 

Définition de finaliser

  • Finalize est une méthode dans une classe d'objet.
  • Un objet peut contenir des ressources non-Java telles que le descripteur de fichier; alors il doit être libéré avant d'être détruit.
  • Cette méthode est appelée par le ramasse-miettes avant de détruire complètement l'objet.
  • Cette méthode effectue des activités de nettoyage pour l'objet avant sa destruction.

La forme générale de la méthode finalize () est la suivante.

 protected void finalize () {// code de finalisation ici} 

La méthode finalize est déclarée protégée afin qu’elle ne puisse être accédée de l’extérieur de la classe.

Cette méthode est toujours appelée avant le garbage collection.

Principales différences entre les finales, les finales et les finales

  1. Le mot-clé final est un modificateur d'accès, enfin un bloc et finalize est une méthode.
  2. Le mot-clé final est applicable aux classes, variables et méthodes des classes. Enfin, un bloc est associé au bloc try catch utilisé pour gérer les exceptions, tandis que finalize est une méthode qui fonctionne uniquement sur des objets.
  3. La variable une fois déclarée comme finale devient constante et ne peut plus être réaffectée, une méthode déclarée comme finale ne peut pas être remplacée et la classe une fois déclarée comme finale ne peut jamais être héritée. Le bloc finally est utilisé pour nettoyer les ressources utilisées par try et catch block. La méthode finalize est utilisée pour nettoyer les ressources utilisées par un objet avant sa destruction.

Conclusion:

Final, final et finalize ont un effet différent lorsqu'ils sont appliqués à une méthode.

Top