#Kata Covariance, Invariance y Contravariance en Scala.

En este post te voy a explicar la diferencia entre Variance, Invariance y Contravariance en Scala cuando use Type Parameters.

Primeros Pasos.

Los siguientes conceptos están directamente relacionados con la herencia y como un tipo puede ser cambiado por otro, o no. Estas «desviaciones» no contemplan las conversiones implícitas.

¿Qué es Invariance?.

La invariancia es la incapacidad de asignar un tipo de dato a otro. Por ejemplo, tienes dos clases que no tienen una relación de herencia por implementación o extensión, y tampoco tienen una conversión explicita.

¿Qué es Covariance?

Covariance es la capacidad de asignara un valor de una clase más derivada a una clase menos derivada. Cuando aplicas herencia, la clase o trait de la que heredas es la «más derivada», las clases o traits base son los menos «derivados».

¿Qué es Contravariance?

Contravariance es la capacidad de asignar un valor de una clase menos derivada a una variable de tipo más derivada. No todos los lenguajes soportan esto de manera automática, ni en todos los casos. En el caso de Scala, solo puedes hacer contra variance con type parameters y type bounds.

 

 

Gustavo Sánchez
Últimas entradas de Gustavo Sánchez (ver todo)

Soy especialista en escribir software de calidad. Mediante el uso de marcos de trabajo, técnicas y automatización de procesos he podido reducir los costes operativos de los sistemas de la empresa. Sistemas confiables y adaptables producen clientes felices.