Multiple inheritance suffers from the diamond problem.
Let's have a look at the following diagram:
Here, both B and C extend A, and then D extends B and C. Some ambiguities might arise from this. Let's say that there was a method that was originally defined in A, but both B and C override it. What would happen if D calls this method? Which one will it exactly call?
All the preceding questions make things ambiguous and this could lead to mistakes. Let's try and reproduce this in Scala using traits:
trait A { def hello(): String = "Hello from A"}trait B extends A { override def hello(): String = "Hello from B"}trait C extends ...