Since my reputation is too low as answer which should only be a comment...
Generics would help to achieve subclass to have more specific parameters as follows:
You could write a generic PersonHelper
public abstract class PersonHelper<T extends Person> {
public abstract Person getPerson(T p);
}
Therefore you could have a ChildHelper with Child as param:
public abstract class ChildHelper<T extends Child> {
public abstract Child getPerson(T p);
}