Introduzione a final in Java
final
è un modificatore di accesso che può essere applicato a variabili, metodi e classi in Java.- Quando applicato a variabili,
final
impedisce la modifica del valore dopo la loro inizializzazione, rendendole costanti. - Esso trova anche applicazione nel contesto dell'ereditarietà che vedremo nelle lezioni successive.
Modificatore di Accesso final
Oltre ad essere dichiarato come public
o private
, Un campo può essere dichiarato come final
.
Farlo impedisce che il suo contenuto venga modificato, rendendolo, essenzialmente, una costante.
Questo significa che un campo final
deve essere inizializzato al momento della dichiarazione. Questo può essere fatto in uno dei seguenti due modi:
- Assegnando un valore nel momento della dichiarazione.
- assegnandogli un valore all'interno di un costruttore.
Il primo approccio è probabilmente il più comune. Ecco un esempio:
final int FILE_NUOVO = 1;
final int FILE_APRI = 2;
final int FILE_SALVA = 3;
final int FILE_SALVACOME = 4;
final int FILE_ESCI = 5;
Le parti successive del programma possono ora utilizzare FILE_APRI
, ecc., come se fossero costanti, senza timore che un valore sia stato modificato.
È una convenzione comune di codifica scegliere identificatori in maiuscolo per i campi final
, come mostrato in questo esempio.
Un esempio del secondo approccio è il seguente:
public class File {
final int FILE_NUOVO;
final int FILE_APRI;
final int FILE_SALVA;
final int FILE_SALVACOME;
final int FILE_ESCI;
public File() {
FILE_NUOVO = 1;
FILE_APRI = 2;
FILE_SALVA = 3;
FILE_SALVACOME = 4;
FILE_ESCI = 5;
}
}
In questo esempio, i campi final
sono inizializzati all'interno del costruttore della classe File
. Questo approccio è utile quando il valore del campo final
dipende da qualche logica o calcolo che deve essere eseguito al momento della creazione dell'oggetto.
Oltre ai campi, anche i parametri dei metodi e le variabili locali possono essere dichiarati final
. Dichiarare un parametro final
impedisce che venga modificato all'interno del metodo. Dichiarare una variabile locale final
impedisce che le venga assegnato un valore più di una volta.
La parola chiave final
può anche essere applicata ai metodi, ma il suo significato è sostanzialmente diverso rispetto a quando viene applicata alle variabili. Questo utilizzo aggiuntivo di final
sarà spiegato nelle lezioni successive quando affronteremo l'argomento dell'ereditarietà.