Contenuti del Corso
Java OOP
Java OOP
Classe Astratta vs Interfaccia
Quale scegliere?
Dai capitoli precedenti, avrai notato che le abstract classes
e le interfaces
sono abbastanza simili. Tuttavia, esistono delle differenze tra loro. Per andare dritti al punto, si può affermare che nella pratica, le interfacce sono spesso preferite rispetto alle classi astratte. Ma cerchiamo di capire il motivo.
Qual è la differenza?
Per cominciare, dobbiamo comprendere le differenze tra una classe astratta e un'interfaccia. Vediamo l'elenco:
Sintassi:
abstract class
per dichiarare una classe astratta einterface
per dichiarare un'interfaccia;Parola chiave di ereditarietà:
extends
per ereditare da una classe astratta eimplements
per ereditare da un'interfaccia;Nomi per le sottoclassi: Una sottoclasse di una
abstract class
viene chiamata sottoclasse o classe derivata, mentre una sottoclasse di unainterface
viene chiamata classe - implementazione;Numero di ereditarietà: Si può ereditare da una sola classe astratta, mentre si possono ereditare più interfacce;
Una
abstract class
può avere sia metodi implementati che metodi astratti. A partire da Java 8, anche le interfacce possono avere metodidefault
, di cui parleremo più avanti in questa sezione;I metodi in una classe astratta possono avere qualsiasi modificatore di accesso, mentre nelle interfacce è consentito solo il modificatore di accesso
public
.
Nota
È anche possibile ereditare contemporaneamente da una classe astratta e implementare un'interfaccia. Prima si utilizza la parola chiave
extends
, poi si usaimplements
. La sintassi è la seguente:class ClassName extends AbstractClass implements Interface {}
In termini semplici, pensa a una classe astratta come a una classe che fornisce alcune funzionalità e impone determinate regole ma lascia alcune parti da completare alle sue sottoclassi. Un'interfaccia, invece, è come una lista di controllo che una classe deve soddisfare, specificando quali metodi deve avere, senza fornire alcun codice effettivo.
Grazie per i tuoi commenti!