Sei sulla pagina 1di 6

CLASSI ASTRATTE ED

INTERFACCE
Classi astratte
Le classi astratte sono classi che non possono essere istanziate direttamente,
ovvero con le quali non si possono creare oggetti come si farebbe con le classi
concrete.
Le classi astratte hanno generalmente, ma non esclusivamente, dei metodi che
sono anch’essi definiti astratti e che sono privi di un corpo di definizione; in altre
parole sono solo dichiarati ma non implementati.
Una classe astratta può comunque essere derivata, e le classi che derivano da essa
DEVONO implementare gli eventuali metodi astratti, sovrascrivendoli con una
propria logica specifica.

abstract class nomeClasse {


abstract tipoDiRitorno nomeMetodo(lista di parametri);
}
Classi astratte
Punti chiave delle classi astratte:
• Una sottoclasse di una classe astratta deve obbligatoriamente implementare gli
eventuali metodi astratti;
• Una classe astratta può avere anche campi e metodi non astratti;
• Una classe astratta non può essere final;
• Creare oggetti di una classe astratta genera un errore di compilazione; si può solo
creare una variabile del suo tipo, alla quale assegnare poi istanze delle sue
sottoclassi;
Per i metodi astratti i punti da seguire sono:
• La loro dichiarazione è permessa solo nelle classi astratte;
• Da una classe derivata da una classe astratta non è possibile usare super per farvi
riferimento; per esempio, se A è una classe astratta che dichiara il metodo astratto
m e D è una sua classe derivata, da un metodo di D non potremo usare super.m();
Interfacce
L’interfaccia è un particolare tipo di classe astratta che dichiara dei metodi che
vanno ndefiniti poi dalle classi che la implementano.

Sintassi:
interface_modifiers(opt) interface nomeInterfaccia extends interface(opt){
corpoInterfaccia;
}
Interfacce
Ereditarietà multipla con le interfacce
In java NON è permesso ad una classe di poter ereditare da più classe(ereditarietà
multiple) e perciò si potrebbe affermare che ciò non è permesso, tuttavia questo
tipo di ereditarietà è permesso attraverso l’interfaccia, ovvero è consentito ad
un’interfaccia di ereditare contemporaneamente da più interfacce, quindi in
definitiva è possibile avere due o più interfacce base.

Differenze tra Interfaccia e Classe astratta:


• Una classe astratta, oltre a metodi astratti, può contenere dat e metodi non
astratti. Una interfaccia no.
• Una classe astratta può avere un costruttore. Una interfaccia no.
• In una interfaccia si possono definire SOLO costanti.
• In una interfaccia i metodi avranno la visibilità public in automatico
Conclusioni
Oltre le differenze sintattiche, si usa una classe astratta o una interfaccia in base al
tipo di legame che si vuole instaurare con le classi derivate. Se si vuole un legame
molto forte con le classi derivate si usa una classe astratta, in questo modo tutti i
figli avranno un comportamento comune (ricordiamoci che una classe può
estendere solo una classe). Le interfacce, invece, servono per definire un
comportamento più generico con i figli, potendo questi essere di vario genere e
natura (ciò è dovuto al fatto che un figlio può implementare tante interfacce ma
solo una classe, astratta o meno).

Potrebbero piacerti anche