3 comments

[ 1.6 ms ] story [ 13.6 ms ] thread
Favor composability over inheritance.

That said plenty of languages don't have inheritance and work just fine.

Traits / Interfaces are a personal sweet spot

The diamond example "TA extends Student, Teacher" seems worse than OO or direct composition. It's either a compiler error or share everything that overlaps.

I would have made the sharing explicit during composition--a Teacher or Student is given the Person instance when constructed, so sharing or not sharing is decided at composition time. To enforce consistency use helper/static methods.

Not sure what you’re getting at, sharing here does for you exactly what you would do with explicit composition.