Classi astratte e interfacce
Le classi astratte dovrebbero astrarre oggetti troppo generici per poter essere istanziati, mentre le interfacce dovrebbero astrarre comportamenti che oggetti diversi potrebbero implementare. È possibile estendere una sola classe alla volta, ma è possibile implementare più interfacce.
-
Scelta tra interfaccia e classe astratta
Se stai creando qualcosa che fornisce funzionalità comuni a classi non correlate, usa un’interfaccia. Se stai creando qualcosa per oggetti strettamente correlati in una gerarchia, usa una classe astratta. -
Differenza tra classi e interfacce
La differenza tra una classe e un’interfaccia è che una classe è un tipo di riferimento che è un progetto per istanziare un oggetto e l’interfaccia è un tipo di riferimento che non può essere utilizzato per creare un’istanza di un oggetto. Una classe può implementare molte interfacce.
Utilizzo di classi astratte e interfacce
Questo serve come base di partenza per generare una o più classi specializzate aventi tutte la stessa interfaccia di base, le quali potranno poi essere utilizzate indifferentemente (ovvero in modo polimorfico) da applicazioni che conoscono l’interfaccia base della classe astratta.
Interfacce in C
Le interfacce servono principalmente per slegare l’entità dall’implementazione, ossia accedere ai membri definiti nell’interfaccia senza sapere che tipo di classe si sta utilizzando.
Estensione e polimorfismo in Java
In Java non è possibile estendere più di una classe per volta, ma è permessa l’implementazione di più interfacce.
Il termine polimorfismo, dal greco πολυμορφοσ (polymorfos, “avere molte forme”), nell’ambito dei linguaggi di programmazione si riferisce in generale alla possibilità data ad una determinata espressione di assumere valori diversi in relazione ai tipi di dato a cui viene applicata.