Hacker News new | ask | show | jobs
by BorisTheBrave 1644 days ago
In most languages Subset would be called a trait or interface, rather than general inheritance. You've picked an example with no fields or overriden methods, so it's impossible for it to demonstrate the shortcomings of inheritance.
1 comments

What is the practical difference between inheritance, and a trait or interface with a default implementation? It seems like both risk the addAll() bug.
Not all languages allow for an interface to have a default implementation though. Delphi for example does not.

This leads the programmer towards composition and delegation.

To aid with this, Delphi even has some sugar for delegation[1].

[1]: https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Usin...

Multiple inheritance is basically strictly more powerful than either traits or interfaces with default implementations.

I don't think traits or interfaces with default implementations prevent the bug, as I can imagine a Rust implementation that would do something similar.