During a code review today, a colleague of mine said something interesting:

> `prototype` is only useful when you need inheritance - and *when's inheritance ever a good idea*?

I thought about this and I realised that I usually use inheritance to get around code that was badly designed in the first place. Modern OO style prefers composition over inheritance, but I don't know of any languages which have taken this to heart and actually _enforce_ it.

Are there any general-purpose programming languages with classes, objects, methods, interfaces, and so on, which disallow class-based inheritance? (If such an idea doesn't make sense, why not?)