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?



"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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.