Every statement within CanAttack(CombatTarget combatTarget)
is accessing the combatTarget and it makes more sense to me for this method to be a member of that class rather than of fighter.
The CombatTarget component enables something to be targeted in combat, so it makes sense for it to contain the logic for whether or not the CombatTarget can be attacked.