Differenza tra Final, Final e Finalize in Java

Autore: Laura McKinney
Data Della Creazione: 2 Aprile 2021
Data Di Aggiornamento: 14 Maggio 2024
Anonim
DIFFERENCE BETWEEN FINAL, FINALLY AND FINALIZE IN JAVA | INTERVIEW QUESTION
Video: DIFFERENCE BETWEEN FINAL, FINALLY AND FINALIZE IN JAVA | INTERVIEW QUESTION

Contenuto


Le parole "final, finalmente, e finalizzare" si trovano all'interno della truffa di Java. A ciascuno di essi viene fornito un funzionamento diverso. La differenza fondamentale tra final, finalmente e finalize è quella finale è un modificatore di accesso, finalmente è un blocco e Finalizza è un metodo di una classe di oggetti. Vi sono alcune differenze tra final, infine e finalize, che vengono discusse nella tabella di confronto.

  1. Tabella di comparazione
  2. Definizione
  3. Differenze chiave
  4. Conclusione

Tabella di comparazione

Base per il confrontoFinaleFinalmenteFinalizza
Di baseFinal è una "Parola chiave" e "modificatore di accesso" in Java.Finalmente è un "blocco" in Java.Finalize è un "metodo" in Java.
ApplicabileFinal è una parola chiave applicabile a classi, variabili e metodi.Finalmente è un blocco che è sempre associato a try and catch block.finalize () è un metodo applicabile agli oggetti.
Lavorando(1) La variabile finale diventa costante e non può essere riassegnata.
(2) Un metodo finale non può essere ignorato dalla classe figlio.
(3) La classe finale non può essere estesa.
Un blocco "finalmente", ripulisce le risorse utilizzate nel blocco "prova".Il metodo Finalize esegue le attività di pulizia relative all'oggetto prima della sua distruzione.
EsecuzioneIl metodo finale viene eseguito al momento della sua chiamata.Il blocco "Infine" viene eseguito subito dopo l'esecuzione del blocco "try-catch".Il metodo finalize () viene eseguito appena prima della distruzione dell'oggetto.


Definizione di Final

"Final" è una parola chiave in Java. È un modificatore di accesso. La parola chiave "finale" è applicabile alle classi, ai metodi e alle variabili. Vediamo come funziona con ciascuno di essi.

Variabile finale

  • Quando una parola chiave finale viene applicata alla variabile, non può essere ulteriormente modificata.
  • Una variabile finale deve essere inizializzata quando viene dichiarata.
  • In una convenzione di codifica comune, le variabili finali sono dichiarate in MAIUSCOLO.
  • La variabile finale non occupa memoria per istanza.

final int FILE_OPEN = 2;

Metodi finali

  • Quando un metodo in classe viene dichiarato come finale, non può essere ignorato dalla sua sottoclasse.
  • I piccoli metodi dichiarati finali possono essere resi "in linea" dal compilatore, il che ridurrà il sovraccarico della chiamata di funzione e aumenterà i miglioramenti delle prestazioni.
  • I metodi sostituiti chiamano, vengono risolti dinamicamente, ma quando un metodo viene dichiarato come definitivo, non può essere sostituito. Quindi, la funzione di chiamata può essere risolta in fase di compilazione.

class A {final void meth () {System.out.ln ("Questo è un metodo finale."); }} la classe B estende A {void meth () {// La classe B non può ereditare il metodo della classe A. System.out.ln ("Non sovrascrive"); }}

Classe finale

  • Quando una classe viene dichiarata come finale, non può essere ereditata da alcuna sottoclasse.
  • Dichiarare una classe come finale dichiarerà automaticamente tutti i suoi metodi finali.
  • Non è possibile dichiarare una classe come "astratta" e "finale".

la classe finale A {// ...} la classe B estende A {// La classe B non può ereditare la classe A // ...}

  • In Java "finalmente" è un blocco che è sempre associato al blocco try / catch.
  • Il blocco "finally" viene eseguito dopo il blocco try / catch e prima del codice che segue il blocco try / catch.
  • Il blocco "finally" verrà eseguito indipendentemente dal fatto che venga generata o meno l'eccezione.
  • Quando viene generata un'eccezione e nessun blocco catch corrisponde all'eccezione anche allora, viene eseguito il blocco "finally".
  • Quando un metodo ritorna al chiamante dall'interno del blocco try / catch tramite un'eccezione non rilevata o un'istruzione di ritorno esplicita, il blocco "finally" viene eseguito appena prima che il metodo ritorni al chiamante.
  • Il blocco "finally" viene utilizzato per ripulire le risorse o liberare la memoria utilizzata nel blocco "try".
  • Il blocco "finally" è facoltativo, ma è buona norma scrivere il blocco finally dopo il blocco try / catch.

class finallyExample {// Questo metodo genera un'eccezione dal metodo. static void procA () {try {System.out.ln ("inside procA"); lanciare nuova RuntimeException ("demo"); } infine {System.out.ln ("procAs finally"); }} // Ritorna dall'interno di un blocco try. static void procB () {try {System.out.ln ("inside procB"); ritorno; } infine {System.out.ln ("procBs finally"); }} // Esegue normalmente un blocco try. static void procC () {try {System.out.ln ("inside procC"); } infine {System.out.ln ("procCs finally"); }} public static void main (String args) {try {procA (); } catch (Exception e) {System.out.ln ("Eccezione rilevata"); } procB (); procC (); }} // output all'interno del procA procA finalmente Eccezione catturata nel procB procB finalmente all'interno del procC procC finalmente

Definizione di Finalizza

  • Finalize è un metodo in una classe di oggetti.
  • Un oggetto può contenere alcune risorse non Java come handle di file; quindi deve essere liberato prima di essere distrutto.
  • Questo metodo viene invocato dal Garbage Collector prima che distrugga completamente l'oggetto.
  • Questo metodo esegue attività di pulizia per l'oggetto prima che venga distrutto.

La forma generale del metodo finalize () è la seguente.


protetto void finalize () {// codice di finalizzazione qui}

Il metodo finalize viene dichiarato protetto in modo che non sia possibile accedervi dall'esterno della classe.

Questo metodo viene sempre chiamato prima della garbage collection.

  1. La parola chiave final è un modificatore di accesso, infine è un blocco e finalizzare è un metodo.
  2. La parola chiave final è applicabile alle classi, alle variabili e ai metodi delle classi, infine è un blocco associato al blocco try catch utilizzato per gestire le eccezioni, finalize è un metodo che funziona solo sugli oggetti.
  3. La variabile una volta dichiarata come final diventa costante e non può essere riassegnata di nuovo, un metodo dichiarato come final non può essere ignorato e la classe una volta dichiarata come final non può mai essere ereditata. Il blocco finally viene utilizzato per ripulire le risorse utilizzate da try and catch block. Il metodo finalize viene utilizzato per ripulire le risorse utilizzate da un oggetto prima che l'oggetto venga distrutto.

Conclusione:

Final, finally e finalize ha un effetto diverso se applicato a un metodo.