📢 Nuovo Corso Laravel API disponibile!

Esercizi su final e static in Java

Ecco degli esercizi con soluzione per praticare l’uso di final e static in Java.

Esercizio 1: Variabile Final

Dichiarare una variabile `final` e tentare di modificarne il valore.
public class VariabileFinal {
public static void main(String[] args) {
final int COSTANTE = 10;
System.out.println("Valore della costante: " + COSTANTE);
// Prova a modificare la variabile final
// COSTANTE = 20; // Questo causerà un errore di compilazione
}
}

Esercizio 2: Metodo Statico

Creare un metodo statico in una classe e chiamarlo senza creare un'istanza della classe.
public class MetodoStatico {
public static void stampaMessaggio() {
System.out.println("Metodo statico chiamato.");
}
public static void main(String[] args) {
MetodoStatico.stampaMessaggio(); // Chiamata al metodo statico
}
}

Esercizio 3: Blocco Statico

Utilizzare un blocco statico per eseguire del codice all'avvio della classe.
public class BloccoStatico {
static {
System.out.println("Blocco statico eseguito.");
}
public static void main(String[] args) {
System.out.println("Metodo main eseguito.");
}
}

Esercizio 4: Metodo Final

Creare una classe con un metodo `final` e tentare di sovrascriverlo in una classe derivata.
class ClasseBase {
public final void metodoFinal() {
System.out.println("Metodo final della classe base.");
}
}
class ClasseDerivata extends ClasseBase {
// Prova a sovrascrivere il metodo final
// @Override
// public void metodoFinal() { // Questo causerà un errore di compilazione
// System.out.println("Metodo final della classe derivata.");
// }
}
public class MetodoFinal {
public static void main(String[] args) {
ClasseDerivata cd = new ClasseDerivata();
cd.metodoFinal();
}
}

Esercizio 5: Variabile Statica

Dichiarare una variabile `static` in una classe e accedervi da un metodo statico e non statico.
public class VariabileStatica {
public static int contatore = 0;
public VariabileStatica() {
contatore++;
}
public static void stampaContatore() {
System.out.println("Contatore: " + contatore);
}
public static void main(String[] args) {
VariabileStatica vs1 = new VariabileStatica();
VariabileStatica vs2 = new VariabileStatica();
VariabileStatica.stampaContatore();
}
}

Esercizio 6: Classe Final

Creare una classe `final` e tentare di ereditarla.
public final class ClasseFinal {
public void stampaMessaggio() {
System.out.println("Classe final.");
}
}
// Prova a ereditare la classe final
// class ClasseDerivata extends ClasseFinal { // Questo causerà un errore di compilazione
// }
public class TestClasseFinal {
public static void main(String[] args) {
ClasseFinal cf = new ClasseFinal();
cf.stampaMessaggio();
}
}

Esercizio 7: Uso di static e final insieme

Dichiarare una variabile `static final` e accedervi da un metodo statico.
public class StaticFinal {
public static final String COSTANTE = "Valore costante";
public static void stampaCostante() {
System.out.println("Costante: " + COSTANTE);
}
public static void main(String[] args) {
StaticFinal.stampaCostante();
}
}

Esercizio 8: Classe Statica Interna

Creare una classe statica interna e accedervi dalla classe esterna.
public class ClasseEsterna {
static class ClasseInterna {
public void stampaMessaggio() {
System.out.println("Classe interna statica.");
}
}
public static void main(String[] args) {
ClasseEsterna.ClasseInterna interna = new ClasseEsterna.ClasseInterna();
interna.stampaMessaggio();
}
}