În mod normal, trebuie să fie accesat un membru al claseiconjuncție cu un obiect al clasei sale. Vor fi momente în care veți dori să definiți membrul clasei la care puteți accesa fără a instantana acea clasă. Acest lucru poate fi realizat prin „static”. Pentru a crea un astfel de membru, precede declarația sa cu cuvântul cheie „static”.
Avantajele statice
Când un membru este declarat static, acesta poate fi accesat înainte de a fi create orice obiecte ale clasei sale sau fără referire la vreun obiect.
De ce declaram principal () drept static?
principal () este punctul de intrare al unei clase. În Java, totul este scris într-o clasă. Acum, atunci când executați numele de fișier java pe promptul de comandă, loader va încărca clasa și JVM va căuta metoda principală pentru a intra în clasă. Prin urmare, crearea principalului () ca static, va face ca JVM să îl acceseze direct prin nume de clasă.main ()
Acesta este motivul pentru care numele programului trebuie să fie același cu numele clasei, unde am scris funcția principală.
Puncte importante de reținut
- Instanța Variabilele declarate statice sunt esențial variabile globale. Când creați obiecte din clasa sa, nu se face o copie a unei variabile statice. Chiar și toate obiectele au aceeași variabilă statică.
- variabilele statice sau funcțiile membrilor se vor încărca în timpul clasei. Asta înseamnă, înainte de a crea orice instanțe (obiecte), funcția principală este prima funcție rulantă a oricărui program pe care îl rulăm manual.
- Dacă doriți să obțineți ceva executat / inițializarea variabilelor statice înainte de încărcarea efectivă a clasei, atunci puneți-le pe toate în bloc static.
De exemplu.
static{
System.out.println („Blocul static inițiat ...”);
}
Se execută chiar înainte de metoda principală () în timpul încărcării clasei.
Restricții În timp ce utilizați Static
- metoda statică poate accesa numai variabile statice.
- metoda statică poate invoca doar metoda statică.
- metoda statică nu se poate referi la acest lucru și la super în niciun fel.
Program
class Addition{ static int num1; static int num2; int a; int b; Addition(){ num1 = -1; num2 = -1; a = -1; b = -1; } Addition(int num1,int num2,int a,int b){ this.num1 = num1; this.num2 = num2; this.a = a; this.b = b; } static void sum(){ //System.out.println("Sum of 4 numbers is: "+(num1+num2+a+b)); /*static method can’t access static vars */ System.out.println("Sum of 'num1' and 'num2' is: "+(num1+num2)); System.out.println(); } void add(){ System.out.println("Addition of 4 numbers is: "+(num1+num2+a+b)); System.out.println(); } } class AditionDemo1{ public static void main(String args[]){ System.out.println(); System.out.println("Static method sum() called without creating any object"); System.out.println("------------------------------------------------------"); Addition.sum(); Addition ad1 = new Addition(); System.out.println("Static Method sum() is invoked second time"); System.out.println("-----------------------------------------------"); Addition.sum(); System.out.println("Non-Static Method add() is invoked using Object ad1"); System.out.println("-----------------------------------------------"); ad1.add(); Addition ad2 = new Addition(10,20,30,40); System.out.println("Static Method sum() is invoked second time"); System.out.println("-----------------------------------------------"); Addition.sum(); System.out.println("Non-Static Method add() is invoked using Object ad2"); System.out.println("-----------------------------------------------"); ad2.add(); System.out.println("Static Method sum() is invoked third time"); System.out.println("-----------------------------------------------"); Addition.sum(); System.out.println("Static Method sum() is invoked using Object"); System.out.println("-------------------------------------------"); ad1.sum(); ad2.sum(); } }
producție
Explicația Codului și a ieșirii Java
Dacă vedeți codul cu atenție, atunci veți găsiam luat două variabile statice și două variabile nestatice, inițializate de doi constructori, adică. unul este parametrizat și altul implicit. Am definit o metodă statică și una nonstatică.
În main (), mai întâi am invocat metoda statică sum () fără a crea niciun obiect din clasa de adăugare.
În cod puteți vedea că metoda statică nu poate accesa variabile non-statice. Dacă încercați să accesați, atunci veți primi următoarea eroare, așa cum am primit:
Acum, dacă vedeți, variabilele statice sunt numai variabile globale. Indiferent de obiecte, acesta a dat același rezultat de fiecare dată când orice obiecte invocă o metodă statică.
Metoda nestatică poate accesa variabile statice.
Metoda nestatică poate invoca metode statice.
Metodele statice pot fi invocate cu <classname>. <Numele metodei statice> și cu <objectname>. <Numele metodei statice>.
Pentru variabilele nestatice, fiecare obiect va avea copii diferite de variabile nestatice cu valori diferite pentru obiecte diferite.
În continuare vom afla despre cum să utilizați cuvântul cheie „acest” în Java.
Consultați aici mai multe tutoriale utile și ghiduri definitive despre programarea Java.
Comentarii