Qual è il reale vantaggio dell'utilizo di una interfaccia piuttosto che di una classe astratta?
Da quello che ho capito entrambe possiedono metodi astratti e quindi per entrambe bisogna fare override dei metodi nella classe (che estende la classe astratta o che implementa l'interfaccia), e allora perchè utilizzare una piuttosto che l'altra?
Io ho provato a darmi una risposta e cioè: conviene utilizzare l'interfaccia per simulare l'ereditarietà multipla in quanto utilizzando una classe astratta non potrei avere un'estensione di questo tipo:
mentre in questa maniera potrei implementare più interfacce contemporaneamente:codice:public class Classe extends ClasseAstratta1, ClasseAstratta2 { ... }
Tanto alla fine anche in un'interfaccia si possono definire variabili e metodi che voglio che siano ereditabili e quindi a quel punto se voglio ereditare da più parti conviene farlo con le interfacce.codice:public class Classe implements Interfaccia1, Interfaccia2 { ... }
Giusto?