I like the way Scala solves the problem with multiple inheritance as described in <a href="https://fuhm.net/super-harmful/" rel="nofollow">https://fuhm.net/super-harmful/</a> : multiple inheritance is allowed, but only classes (not traits) may have constructors, and a class may only have one parent class (i.e. only one parent with a constructor).<p>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.
> The example is based on characters of Game of Thrones, to make understanding concepts less boring.<p>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:<p>Flarg → Twipptch → Glorp → Boop → Fwyxnth → AnyRef → Any<p>So instead of being less boring, I have to use a decoder ring to figure out what's going on here.