Diferența dintre final și statică

În matematică și știință, constanta este un termen care denotă o anumită valoare, precum 'π', care este un nume practic pentru numărul 3.14159. Java are un fel de constante. Acestea sunt variabile care în conformitate cu (a) nu aparțin nici unui obiect și sub (b) nu își modifică valoarea după ce au fost stabilite. Cuvântul static din declarația de variabilă arată că variabila nu aparține nici unui obiect. Există un cuvânt cheie similar care spune că valoarea variabilă va fi setată o singură dată și nu se va schimba. Acesta este cuvântul cheie final. Acest cuvânt cheie nu se limitează la variabilele statice, ci poate fi utilizat cu variabile de instanță, variabile locale și chiar cu variabile care sunt metode de parametru. Prin declararea variabilei ca finală, îi arătați tuturor că variabila în timpul existenței va avea aceeași valoare. Mai important, compilatorul va detecta fiecare încercare de a schimba valoarea unei variabile declarate astfel încât să o raporteze ca o greșeală. În ceea ce privește terminologia Java, variabila declarată statică și finală este numită constantă.

Ce este Final?

Modificatorul final poate fi folosit în mai multe locuri în limba de programare Java. Aici vom acoperi cea mai obișnuită utilizare. Modificatorul final poate fi aplicat la declararea unei variabile locale, a unei funcții și a unor variabile non-statice sau statice. În acest context, modificatorul variabil convertește la o constantă. Traducătorul limbii de traducere va verifica dacă un cod încearcă să modifice valoarea și astfel de încercări vor fi semnalate ca o eroare. Iată un exemplu.

valoarea final int = 17;

Variabilele statice ale membrilor cu acest modificator sunt utilizate ca constante globale; de exemplu, în variabila java.lang.Math PI, se specifică exact

public static final dublu PI = 3.14159265358979323846;

Putem aplica modificatorul final la declarația de funcție. Funcția marcată cu finalul nu mai poate fi anulată - aceasta este implementarea finală. Metodele abstracte nu pot fi declarate finale - faptul că ele sunt abstracte înseamnă că le lipsește implementarea; cu siguranță nu poate fi starea lor finală. Iată un exemplu.

public final int intelesLife ()

return 42;

Putem aplica modificatorul final declarației clasei. Clasa care este marcată cu finala nu mai poate moșteni - aceasta este implementarea ei finală. În mod evident, clasa abstractă nu poate fi definitivă în același timp. Iată un exemplu

clasa publică finală Închis

// ...

Unul dintre exemplele clasei finite este clasa java.lang.String - este finit, astfel încât nimeni nu ar putea să o moștenească și astfel să aibă acces la variabilele sale membre.

Ce este Static?

Variabilele statice nu aparțin unui anumit exemplu de clasă. Variabilele statice aparțin clasei însăși și în memorie există o singură locație, indiferent de numărul de copii ale acelei clase care sunt create în memorie. Variabilele non-statice aparțin specimenelor de clasă - fiecare instanță a clasei are o copie proprie a acestor variabile. Variabilele statice aparțin clasei - clasa din memorie păstrează valorile unor astfel de variabile; toate clasele de eșantioane, prin urmare, văd același conținut, astfel încât să putem lua în considerare variabilele statice care să fie împărțite între toate dimensiunile de clasă. Actualizând variabila valorii, noua valoare va fi vizibilă automat pentru toate instanțele acelei clase. Filtrul static poate fi aplicat oricărui element declarat legal într-o clasă. În cazul variabilelor de membru, consecința este că aceste variabile membre vor fi stocate în memorie numai într-un singur loc. Ce se întâmplă dacă este o metodă? Prin declararea metodei ca fiind statică, mesajul este același: metoda relevantă nu aparține claselor de clase, ci clasei însăși. În consecință, metodele statice nu vor primi o referință ascunsă a obiectului peste care sunt chemați la apel; în metodele de referință statice acest lucru nu este disponibil. Într-adevăr, invocarea metodelor statice în cadrul obiectului este la fel de confuză ca accesarea variabilelor statice ale membrilor prin trimiterea la această referință: în ambele cazuri este mai bine să scrieți pur și simplu numele clasei, punctul și numele metodei de apelare.

Diferența dintre final și statică

  1. Variabil

Înseamnă statică pentru o variabilă care este comună tuturor obiectelor care instanțiază o anumită clasă, în timp ce definiția definește constanta.

  1. Metodă

Static este o metodă care este aceeași pentru fiecare obiect dat de clasă - este, de asemenea, numit membru de clasă, de ex. aceasta este principala metodă. Metoda finală nu poate fi procesată în clasa moștenită.

  1. Clasă

Finalul nu poate fi extins, adică nu permite subclase. Static nu se aplică la clasă.

  1. Valoare

Pentru a spune pur și simplu, finalul a indicat că valoarea nu poate fi schimbată (suprascrie). Valoarea statică este setată la valoarea implicită, dar poate fi reinitializată.

Final vs Static: Graficul de comparație

Rezumatul final și static

  • Staticul de lucru cheie oferă acces chiar și atunci când nu există nici un obiect (exemplu). Clasele proeminente sunt declarate prin cuvântul cheie static. Dacă nu doriți ca valoarea unor modificări ulterioare în program să meargă sau dacă doriți ca compilatorul să verifice și să interzică, puteți schimba această promisiune până la final. Există un bloc static pentru inițializare. Blocul static pentru inițializare este declarat ca static cheie în fața brațelor. Acest tip de bloc este efectuat o singură dată, în cursul citirii clasei, și de obicei inițializează membrii statici ai clasei.