Home / Programmazione / Java / Variabili e metodi statici in Java
Mattepuffo

Variabili e metodi statici in Java

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!