Rasgos, herencia e interfaces en Groovy, ¿cuándo usarlos?

10

Estoy aprendiendo de maravilla y acabo de enterarme de la nueva característica agregada en 2.3, que es la adición de Rasgos . Ahora para mí, parece que los Rasgos le permiten hacer básicamente todo lo que una superclase y una interfaz pueden hacer.

¿La incorporación de Rasgos a Groovy hace que la herencia y las interfaces sean obsoletas?

Y si no, ¿cuál es el mejor momento para usar cada uno de estos mecanismos?

Ryan Stull
fuente
"maravilloso y acabo de enterarme de la nueva característica agregada en 2.3, que es la adición de Rasgos": los rasgos se agregaron por primera vez a Groovy anterior a 2.0 a través de un complemento AST llamado Groovy ++ booster, consulte code.google.com/p / groovypptest / wiki / Traits
Vorg van Geir
Realmente deberías leer los documentos sobre los rasgos. Ninguna respuesta dada aquí estará completa sin mencionar todo de lo que hablan esos documentos; Deberías prestar especial atención a las secciones 13 - final
smac89

Respuestas:

4

Los rasgos combinan lo mejor de ambos mundos: la herencia de clases (abstractas) y la implementación de interfaces. Un rasgo puede contener implementaciones predeterminadas de métodos y, sin embargo, un tipo puede implementar múltiples rasgos a la vez. Esto permite algún tipo de herencia múltiple, pero en el buen sentido, evitando el diamante mortal de la muerte .

Si no sabes cómo empezar, usa rasgos. Obtiene flexibilidad y puede cambiar a interfaces o herencia de clases más adelante si es necesario.

fxfour
fuente
3
En las interfaces puede definir el método predeterminado, entonces, ¿cuál es la diferencia lógica?
Gilad Baruchian
También estoy confundido con la diferencia entre los rasgos y los métodos predeterminados de la interfaz. Solo puedo suponer que los rasgos en groovy se introdujeron antes que los métodos predeterminados en Java
1919
Un rasgo le permite definir campos regulares, no solo los campos estáticos como interfaz que los límites de java a
smac89
Si está confundido acerca de los rasgos, lea los documentos . Son muy informativos
smac89
1
@ smac89, gracias, ¡fue realmente útil!
olyv