Esto no funciona:La herencia de un rasgo en dos ocasiones
trait Trait
class Class extends Trait with Trait
compilador se queja:
<console>:8: error: trait Trait is inherited twice
class Class extends Trait with Trait
^
<console>:8: error: trait Trait is inherited twice
class Class extends Trait with Trait
^
esto hace:
trait Trait
class Abstraction extends Trait
class Implementation extends Abstraction with Trait
Preguntas:
- W ¿Por qué funciona?
- ¿En qué se diferencia el segundo fragmento? (en relación con el problema de la herencia doble)
- ¿El segundo fragmento o patrón de alguna manera es útil?
¿Tiene un ejemplo práctico en el que es un problema real que el primero no funciona? – Jesper
El propósito de la pregunta no es averiguar por qué el primero no funciona, sino más bien por qué el segundo sí lo hace. – agilesteel
Enlace útil: [capítulo de Programación en Scala] (http://www.artima.com/pins1ed/traits.html#i-1280910181-1) que muestra cómo funciona la linealización. – 4e6