broke31 ha scritto:
a cosa mi serve di preciso un'interfaccia cioè per adesso la sto vedendo solo come una dichiarazione di un prototipo fatta in un'altra pagina ...
Una interfaccia in Java è un tipo completamente "astratto". Descrive solo quali sono le operazioni (metodi) che un oggetto (implementante la interfaccia) dovrà fare ma senza definire in alcun modo
come tali operazioni devono essere implementate. Proprio perché la implementazione è delegata ad un sottotipo "concreto" che dovrà farsi carico di implementare realmente quei metodi. Implementando la interfaccia in classi diverse, è possibile ottenere quindi implementazioni differenti.
Le interfacce si usano in genere per definire dei "contratti" tra entità diverse ma in generale servono per creare delle "astrazioni" con lo scopo finale di sfruttare il polimorfismo.
Se ho un metodo che riceve un CharSequence (interfaccia disponibile da Java 1.4), al metodo posso passare un String o un StringBuffer o un StringBuilder (Java 1.5+) o altro che implementa CharSequence.
Certo, quanto ho appena detto si poteva fare anche se CharSequence fosse stata una classe astratta ma essendo una interfaccia essa rappresenta solamente un qualcosa di astratto, "teorico". Quindi ad un livello più generico rispetto a qualunque implementazione concreta parziale o completa.
E inoltre dal momento che Java supporta l'ereditarietà multipla
di interfaccia, posso implementare CharSequence in una qualunque mia classe, anche se estende già una classe e se implementa già altre interfacce.