Why games reject deep inheritance
The obvious way to model a game is a class tree: Entity, then Character, then Player. It collapses the moment requirements cross the branches. A crate that is destructible but not alive, an enemy turret that shoots but cannot move, a pickup that floats and glows. Each new combination wants to inherit from two places at once, and single inheritance says no.
Unity's answer is composition. There is no Player class in the engine. There is a GameObject, which is essentially an empty bag with a name, plus a list of components you attach to it. A component contributes one capability: a shape, a renderer, physics, your own script.
A thing in a Unity scene is therefore defined by what it has, not by what it is. Combinations become additive instead of a taxonomy problem.

