I have a situation utilizing class table inheritance where the base object (which is abstract) is extended by specific types of the object.
For example, Person --> User --> Prospect
However, in some instances like with Prospect, sometimes it extends User and sometimes it doesn't. I can't reverse the relationship because User !== Prospect so I'm wondering how to best handle these kinds of scenarios where an object sometimes extends and sometimes doesn't.
Also, I know that someone will suggest composition over inheritance in this case, but that's truly not feasible because I'm relying on the ability to extend parent functionality and member properties are populated so that all properties are accessed in the exact same manner.