Variabili e metodi statici in Java
Per tutti quelli che si affacciano alla programmazione a oggetti, è difficile capire l'utilizzo dei metodi e delle variabili statiche.
Lo trovo abbastanza comprensibile!
Oggi cerchiamo di dare una definizione con degli esempi usando Java.
Quello che diremo, però, si può applicare ad altri linguaggi OOP; considerando le differenze ovviamente.
Cominciamo con un pò di teoria:
Un membro (variabile o metodo) di istanza (quindi non static) è associato distintamente a ciascun oggetto (quello che si dice istanza di classe).
Quindi, se una classe ha una variebile privata (ad esempio nome), ciascun oggetto ha il proprio campo nome distinto dagli altri.
E un metodo di istanza può essere usato per accedere a quel campo.
Facciamo un esempio:
public class Persona {
private String nome;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Una classe con un campo privato che identifica il nome.
Poi:
public class Main {
public static void main(String[] args) {
Persona p1 = new Persona();
p1.setNome("TRISTANO");
Persona p2 = new Persona();
p2.setNome("ISOTTA");
System.out.println("Il nome di p1 è: " + p1.getNome());
System.out.println("Il nome di p2 è: " + p2.getNome());
}
}
Questo è il risultato:
Il nome di p1 è: TRISTANO
Il nome di p2 è: ISOTTA
Come ci aspettavamo sono diversi.
Invece, un membro (variabile o metodo) di classe (quindi static) è associato alla classe, e non a ciascun distinto oggetto.
Quindi il membro è unico, e indipendemtente da quanti oggetti vengono istanziati (per certi potremo paragonarlo ad una variabile "globale").
Provate a fare questa semplice modifica:
public class Persona {
private static String nome;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Se rilanciate il programma, il risultato sarà diverso:
Il nome di p1 è: ISOTTA
Il nome di p2 è: ISOTTA
Non è facile dire quando è meglio usarli, e quando no.
Dipende molto dai casi; ci vuole un pò di esperienza.
Io comunque seguo il consiglio che mi hanno dato anni fa: usare static il meno possibile.
A questo punto, essendo l'11 agosto ed essendo già in vacanza, vi saluto e vi auguro buone vacanze.
Ci rivediamo a settembre!
java oop static
Commentami!