In Java, I have an abstract class Player and the two classes Striker and Defender they both extend the abstract class Player. I have an Interface IAttack and an Interface IDefend. In those 2 interfaces there is the prototype of only one method - the method shoot(for the Interface IAttack) and the method tackle(for the interface IDefend). I've implemented the method shoot(resp. tackle) in the class Striker(resp Defender).With this hierarchy I can create Strikes, who can only shoot the ball to a given distance. I can create defenders, who can tackle somebody only with a given intensity.
What I want is to be able to create strikers(resp. defenders) who can do different tasks(and not only shoot to a given distance). For example I'd like to have a striker who can shoot a penalty, a striker who can play with its head etc.
How can I do that? Do I need necessarily to create more classes for the strikers(I mean a class for the strikers who shoot penalties, a class for the striker who play with head). Is there a more elegant way to have strikers who can do multiple tasks?
Striker.isPenalties().