It's one of many ways in Scala where a single abstract construct could have several different semantics applied to it.
I understand what you wanted to show but your example is really confusing and definitely is not correct.
For those of us who don't know anything about Game of Thrones, and can't pronounce Elvish names, the example in this article reads like:
Flarg → Twipptch → Glorp → Boop → Fwyxnth → AnyRef → Any
So instead of being less boring, I have to use a decoder ring to figure out what's going on here.
//Legacy
abstract class Lannister
//Father
trait Tywin extends Lannister
could have just been: abstract class Family
trait Father extends Family
Otherwise, I appreciate the article - it was informative.For my part I still prefer composition over inheritance and prefer to do composition "by hand" (i.e. explicit members and delegation) where necessary; I wouldn't use this style at all. But Scala's great strength (and great weakness) is that it has absolutely first-class support for traditional OO like this as well as all the functional stuff.
http://blog.ryannedolan.info/2014/03/scala-pattern-stackable...
Composition locks away the behavior you want so that you know exactly what you're getting.