#Kata Herencia multiple en Scala.

En este post te voy a explicar como funciona la herencia múltiple en Scala.

Primeros pasos.

El término herencia múltiple en Scala es una verdad a medias. ¿Existe la herencia múltiple en Scala?, la respuesta es: sí. Pero, solo en tiempo de ejecución. No puedes heredar de más de una clase padre a la vez, lo que si puedes hacer, es heredar de varios traits a la vez.  Un trait es una mezcla entre una clase abstracta y una interface, tiene muchos comportamientos de estas, pero no es exactamente lo mismo.

La herencia de clases en Scala debe ser secuencial.

No puedes heredar de más de una clase, pero si puedes hacerlo de varios traits.

Linearización.

Ya establecimos que no puedes heredar de más de una clase padre  y si puedes heredar de varios traits al mismo tiempo. Scala ejecuta un proceso de resolución de componentes llamando linearización cuando heredas de uno o varios traits. Este proceso crea una secuencia de todos los elementos contenidos en la clase, superclases y traits. Con esto se compone una sola clase con todos los elementos y la resolución de conflictos, en caso de que existan.

En el siguiente ejemplo, trate de ver si era posible llamar a un método de un trait explícitamente, así como se puede hacer en C#. No pude hacerlo, el proceso de linearización resuelve el método «doSomething» al más reciente declarado e ignora los métodos de los traits base.

Conclusiones.

En la práctica, decir que existe herencia múltiple en Scala es poco preciso. Los traits son mixins, que funcionan a base de la composición de objetos. El mixin es un mecanismo similar a la herencia. La herencia múltiple es problemática en los lenguajes de programación, siempre se buscan mecanismos para emularla sin tener que lidiar con el dolor de cabeza, de determinar el tipo de un objeto que hereda de dos clases.

 

 

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.