Many will say "favor composition over inheritance".  Others will say "Use inheritance when you want to add functionality and use composition when you want to modify functionality.  Both seem like sound advice. My current predicament doesn't completely fit but hoping it does enough.  Working on a multitenant application where most entities must belong to a given Tenant, so I create the AbstractEntityBelongsToTenant class who's sole purpose is to add the Tenant to the entities and extend all