Recomandat, 2024

Alegerea Editorului

Diferența dintre Final, Final și Finalizare în Java

Cuvintele "finală, finală și finalizată" se află în contextul Java. Fiecare dintre ele are o funcționare diferită. Diferența de bază dintre finală și finalizare este că finalul este un modificator de acces, în final este un bloc și se finalizează este o metodă a unei clase de obiecte. Există și alte diferențe între final și final, care sunt discutate în tabelul de comparație.

Diagramă de comparație

Bazele comparațieiFinalIn cele din urmaDefinitivarea
De bazăFinal este un "cuvânt cheie" și "modificator de acces" în Java.În cele din urmă este un "bloc" în Java.Finalize este o "metodă" în Java.
AplicabilFinal este un cuvânt cheie aplicabil clasei, variabilelor și metodelor.În cele din urmă, este un bloc care este asociat întotdeauna cu încercarea și blocarea blocului.finalize () este o metodă aplicabilă obiectelor.
Lucru(1) Variabila finală devine constantă și nu poate fi realocată.
(2) O metodă finală nu poate fi suprimată de clasa copilului.
(3) Clasa finală nu poate fi extinsă.
Un bloc "în cele din urmă", curățați resursele folosite în blocul "încercați".Metoda de finalizare efectuează curățarea activităților legate de obiect înainte de distrugerea acestuia.
ExecuţieMetoda finală este executată la apelul său.Blocul "În cele din urmă" se execută imediat după executarea blocului "try-catch".finalize () metoda se execută chiar înainte de distrugerea obiectului.

Definiția Final

"Final" este un cuvânt cheie în Java. Acesta este un modifiant de acces. Cuvântul cheie "final" este aplicabil clasei, metodelor și variabilelor. Să vedem cum funcționează cu fiecare dintre ei.

Variabila finală

  • Atunci când un cuvânt cheie final este aplicat variabilei, acesta nu mai poate fi modificat.
  • O variabilă finală trebuie inițializată atunci când este declarată.
  • Într-o convenție comună de codificare, variabilele finale sunt declarate în UPPERCASE.
  • Variabila finală nu ocupă memoria pe bază de instanță.
 final int FILE_OPEN = 2; 

Metode finale

  • Atunci când o metodă în clasă este declarată finală, ea nu poate fi suprascrisă de subclasa sa.
  • Metodele mici care sunt declarate finale pot fi făcute "inline" de către compilator, ceea ce va reduce costurile generale ale apelării funcțiilor și va spori îmbunătățirile de performanță.
  • Metodele de apel override, sunt rezolvate dinamic, dar când o metodă este declarată finală, ea nu poate fi înlocuită. Prin urmare, chemarea funcției poate fi rezolvată la momentul compilării.
 clasa A {final void meth () {System.out.println ("Aceasta este o metodă finală."); }} clasa B extinde A {void meth () {// Clas B nu poate moșteni metoda de clasă A. System.out.println ("Nu suprascrie"); }} 

Clasa finală

  • Când o clasă este declarată finală, atunci ea nu poate fi moștenită de nici o subclasă.
  • Declarația unei clase ca finală va declara automat toate metodele sale finale.
  • Nu poți declara o clasă ca fiind atât "abstractă", cât și "finală".
 clasa finală A {// ...} clasa B extinde A {// Clasa B nu poate moșteni clasa A // ...} 

Definiția finally

  • În Java, "în cele din urmă" este un bloc care este asociat întotdeauna cu blocul try / catch.
  • Blocul "în cele din urmă" se execută după blocul de încercare / captură și înainte de codul care urmează blocul de încercare / captură.
  • Blocul "în cele din urmă" va executa dacă excepția este aruncată sau nu.
  • Atunci când o excepție este aruncată și nici un bloc de captură nu se potrivește cu excepția chiar atunci, blocul "în cele din urmă" este executat.
  • Când o metodă se întoarce la apelant din interiorul blocului try / catch prin intermediul unei excepții neîntârziate sau a unei instrucțiuni explicite de returnare, blocul "în cele din urmă" se execută exact înainte ca metoda să revină la apelant.
  • Blocul "în cele din urmă" este folosit pentru a curăța resursele sau pentru a elibera memoria folosită în blocul "try".
  • Blocul "în cele din urmă" este opțional, dar este o practică bună să scrieți în cele din urmă un bloc după încercarea / blocarea blocului.
 class FinallyExample {// Această metodă aruncă o excepție în afara metodei. static void procA () {încercați {System.out.println ("inside procA"); arunca noua RuntimeException ("demo"); } în cele din urmă {System.out.println ("în cele din urmă procA"); }} // Întoarceți dintr-un bloc de încercare. static void procB () {încercați {System.out.println ("inside procB"); întoarcere; } în cele din urmă {System.out.println (în cele din urmă "procB's"); }} // Executați în mod normal un bloc de încercare. static void procC () {încercați {System.out.println ("inside procC"); } în cele din urmă {System.out.println ("în cele din urmă procC"); }} static public void principal (String args []) {try {procA (); } captură (Excepție e) {System.out.println ("Excepție prins"); } procB (); procC (); }} // ieșire în procA ProCA în cele din urmă Excepție prins în interiorul procB procB în cele din urmă în interiorul procC procC în cele din urmă 

Definiția Finalize

  • Finalize este o metodă într-o clasă de obiecte.
  • Un obiect poate conține anumite resurse non-java, cum ar fi mânerul fișierelor; atunci trebuie să fie eliberată înainte ca ea să fie distrusă.
  • Această metodă este invocată de colectorul de gunoi înainte de a distruge complet obiectul.
  • Această metodă efectuează activități de curățare a obiectului înainte de a fi distrus.

Forma generală a metodei finalize () este după cum urmează.

 protejat void finalize () {// cod de finalizare aici} 

Metoda de finalizare este declarată protejată astfel încât să nu poată fi accesată din afara clasei.

Această metodă este apelată întotdeauna înainte de colectarea gunoiului.

Diferențele cheie între finală, finală și finalizare

  1. Cuvântul cheie final este un modificator de acces, în cele din urmă este un bloc și finalizarea este o metodă.
  2. Cuvântul cheie finală este aplicabil clasei, variabilelor și metodelor din clase, în final este un bloc asociat cu blocul de încercare de încercare care este utilizat pentru a face față excepțiilor, finalizarea este o metodă care funcționează numai pe obiecte.
  3. Variabila declarată ca finală devine constantă și nu poate fi realocată din nou, o metodă declarată finală nu poate fi suprimată, iar clasa declarată definitivă nu poate fi niciodată moștenită. Blocul final este utilizat pentru a curăța resursele utilizate de blocul de încercare și captură. Metoda de finalizare este folosită pentru a curăța resursele folosite de un obiect înainte ca obiectul să fie distrus.

Concluzie:

Finalul, final și finalizat are un efect diferit atunci când este aplicat pe o metodă.

Top