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.
- NVL in SQL Server - 2023-11-01
- ¿Que es Cake Build? - 2023-02-22
- #How to fix error: MSB4019: The imported project «Microsoft.Data.Tools.Schema.SqlTasks.targets» was not found - 2023-02-20