Classi Astratte e Interfacce

Le classi astratte sono delle classi che non ha senso istanziare.
Sono concetti astratti. Creo una classe astratta con un metodo astratto che obbliga le sottoclassi a fare un Override di quel metodo.
Infatti quando una classe estenderà la nostra superclasse astratta, sarà obbligata a implementare tutti i metodi astratti di quella classe astratta.

Una superclasse può essere astratta se non ha senso mai istanziarla.

Dubbi? Quando può aver senso istanziare la classe?
Se ha senso allora Superclasse normale.
Se invece No. scegli se usare le classi astratte o le interfacce.


public abstract class SocialMediaAccount{

}

NB Una volta definito che una classe è astratta (inserendo la parola abstract) se noi proviamo a istanziare un oggetto da quella classe astratta, possiamo solo dichiararlo, ma Java non ci permette di crearlo in perché le classi astratte non hanno proprio il costruttore, non ne viene dato uno vuoto di default come accade per le classi normali.

Le interfacce

Le interfacce definiscono i metodi che le classi devono implementare obbligatoriamente. Le interfacce sono molto generiche e possono essere rea tate classi diverse.

Una classe può implementare più interfacce. Quando una classe implementa un’interfaccia, vuol dire che è costretta ad implementare i metodi imposti dall’interfacia. l’Interfaccia è un concetto astratto.

Una classe può implementare diverse Interfacce, ma può estendere solo una Superclasse.

se definisco una Superclasse Veicolo con delle caratteristiche la sottoclasse automobile erediterà tutte le caratteristiche. A volte però è utile che la mia sottoclasse automobile erediti delle caratteristiche aggiuntive che non sono della superclasse veicolo, per questo si utilizzano quante interfacce possibili.

l’interfaccia impone un metodo ma non dice come deve essere quel metodo. Indica solo nome e firma.
Proprio perchè deve essere poter utilizzata per concetti generici, astratti.
Infatti non ci sono le graffe dopo questo metodo ma solo chiusura con ;.
Si occuperà la classe che implementa a definire il metodo.


public interface Session {

boolean login (String username, String password);

}

Dopo JAVA9 è stato concessaa la possibilità di definire metodi statici e di default, dentro le interfacce, che si ereditano normalmente come in una classe tradizionale.
Ma il concetto generale è che all’interno dell’interfaccia devi stabilire un elenco di caratteristiche e firme che vuoi che le classi che la implementano devono mantenere.

Un pensiero su “Classi Astratte e Interfacce

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *