Could it be about the definition of OOP? It seems to me it depends on whether you consider inheritance being required to do OOP.

I found doing OOP with too much use of inheritance led to horribly confusing and possibly unoptimal code. Contain&delegate seems cleaner even at the cost of little bit of boilerplate.

Reply to this note

Please Login to reply.

Discussion

Inheritance is only necessary in statically typed languages, and then only for interfaces. Inheritance in a dynamically typed language is entirely different and can be useful in a much more relaxed way.

The language I currently use is Clojure. It has no inheritance per se, but that's because the things that inheritance is helpful with can be achieved through different mechanisms.

Yeah inheritance of interfaces feels like a different category in my mind. So it seems we mostly agree.

I personally prefer statically (and strongly) typed languages since I found the software written in them more reliable.