LE SEALED CLASS E LE SEALED INTERFACE IN JAVA

java-logo

Tanto per cominciare diciamo che la parola sealed vuol dire sigillato; quindi, una sealed class è una classe sigillata. Questo ci porta all’importante domanda che cos’è una classe sigillata? Facciamo un passo indietro.

Tipi di classi

Siamo nella condizione in cui una classe può essere completamente ereditata, oppure se dichiarata come final non può in alcun modo essere ereditata. Le sealed class si pongono tra questi due estremi ponendoci soluzioni alternative. Vediamo la definizione.

definizione

Con la parola chiave sealed la classe diventa sigillata tuttavia la parola chiave permits ci consente di specificare una lista di classi che la possono ereditare.

Sottoclassi

Tuttavia, anche così facendo otteniamo il seguente errore del compilatore.

Errore

Questo errore specifica che le sottoclassi devono specificare uno dei tre modificatori riportati nel messaggio di errore. Introduciamo la situazione più comune.

final

Con final indichiamo l’ultimo punto di ereditarietà oltre il quale non si può scendere, in pratica dichiariamo la fine della gerarchia. Vediamo la seconda possibilità.

sealed

CClass è l’ultima classe nella gerarchia e non può essere ereditata (modificatore final). Vediamo la terza possibilità.

non-sealed

Con il modificatore non-sealed abbiamo rotto il sigillo, cioè BClass torna ad essere libera di poter essere ereditata da qualsiasi altra classe.

LE SEALED INTERFACE

Si prosegue sulla stessa linea delle sealed class applicata però alle interface.

Guardiamo la figura.

sealed interface

Così come le classi si possono specificare i modificatori final, sealed e non-sealed.

Ereditarietà tra interface

Vediamo l’ultimo esempio.

Ereditarietà e implementazione

LINK AI POST PRECEDENTI

IL LINGUAGGIO JAVA

LINK AL CODICE SU GITHUB

GITHUB

ESECUZIONE DEL CODICE DI ESEMPIO

  • Scaricare il codice da GITHUB, lanciare il file JAR con il seguente comando in Visual Studio Code, posizionandosi nella directory contenente il JAR.

        java -jar –enable-preview CorsoJava.jar

  • Oppure mettere in esecuzione il main che si trova nel file CorsoJava.java.