Ogni reference type in Java, eccetto Object
, deriva da una singola superclasse.
proposito, classi Java possono implementare zero o più interfacce.
in generale, l'interfaccia è un contratto che descrive i metodi di una classe che implementa è costretto ad avere, anche se senza fornire direttamente un'implementazione.
In altre parole, una classe Java è obbligata a rispettare il proprio contratto e quindi a dare attuazione alle firme di metodo fornite dalle interfacce che dichiara di implementare.
Un'interfaccia costituisce un tipo. Quindi è possibile passare parametri e avere valori di ritorno da metodi dichiarati come tipi di interfaccia, richiedendo in questo modo che i parametri ei tipi di ritorno implementino metodi particolari senza necessariamente fornire un'implementazione concreta per essi.
Questo imposta la base per diversi modelli di astrazione, come, ad esempio, dependency injection.
Scala, di per sé, ha dei tratti. I tratti forniscono tutte le funzionalità delle interfacce Java, con la differenza significativa che possono contenere implementazioni e variabili del metodo. I tratti sono un modo intelligente di implementare i metodi una sola volta e, attraverso questo, distribuire questi metodi in tutte le classi che estendono il tratto. Come le interfacce per le classi Java, puoi mescolare più di un tratto in una classe Scala.
Poiché non ho alcuna Rubino sfondo, però, ti puntare a un estratto da "Inizio Scala" di David Pollak (amazon link):
Ruby ha mixins, che sono collezioni di metodi che possono essere mescolato in qualsiasi classe. Poiché Ruby non ha una tipizzazione statica e non c'è modo di dichiarare i tipi di parametri del metodo, non esiste un modo ragionevole per utilizzare i mixin per definire un contratto come le interfacce. Le mixine di Ruby forniscono un meccanismo per comporre il codice in classi ma non un meccanismo per definire o applicare i tipi di parametri.
Le interfacce possono fare anche più di quanto descritto in questo post; Dal momento che l'argomento può essere vasto, ti suggerisco di investigare di più in ognuna delle tre direzioni, mentre se hai persino uno sfondo Java, Scala e quindi i tratti sono accessibili per imparare.
Scala ha dei tratti solo (mixins e interfacce sarebbero compresi dalla tratti).Guardando il tuo profilo sembra che tu abbia uno sfondo Java. Dovresti provare Scala, scoprirai che i tratti sono molto utili quando vuoi mescolare alcune implementazioni che sono ortogonali alla tua classe attuale. È più difficile fare bene quando vuoi impilare i tratti. Vedi http://www.artima.com/pins1ed/traits.html per maggiori dettagli. – huynhjl
@ams: dai un'occhiata a questa [risposta] (http://stackoverflow.com/a/23124968/33311). Potrebbe essere utile anche se è taggato "groovy". – Lernkurve