The card class and the player class

My plan was to give keywords to players via continuous static abilities (Shroud, Hexproof, ?). This seems to be rather simple, since most of the structure is there already.
When I was working on this, I wondered if it would be helpful to get the card class and the player class in line as much as possible, mainly by adding isValid and hasProperty to the player class with the same syntax.
Is there any benefit in adding an ancestor class for both of them and overwrite functions like isValid, hasKeyword, canTarget, addDamage, ...?
When I was working on this, I wondered if it would be helpful to get the card class and the player class in line as much as possible, mainly by adding isValid and hasProperty to the player class with the same syntax.
Is there any benefit in adding an ancestor class for both of them and overwrite functions like isValid, hasKeyword, canTarget, addDamage, ...?