Why Inheritance Never Made Any Sense
Inheritance was never a problem: trying to use the same tree for three different concepts was the problem.
[…]
Your domain model is not your object model. Your domain model is not your abstract data type model. Your object model is not your abstract data type model.