I think languages which bolt some trait / generic / role system onto an object-oriented system are generally a bit too bloated, non-opinionated, and confusing. Typeclasses not only encourage an elegant separation between data and functions, they allow you to design guarantees about how your functions interact with each other into your program — basically, not only data inheritance but also functional inheritance. Object oriented syntactic sugar is an easy add-on to a typeclassed language, but not the other way around.
Beyond immediately reducing bugs, I think widespread use of this sort of language designed with a good type system from first principles would allow many more programmers to write programs with some provable security guarantees.