No, there really isn't because Child is a subclass of Father, not the other way around. If you had
public Child getMe();
You could do
Father father = c.getMe();
with no problem because you can convert implicitly to a supertype, you can't do that the other way around. Basically, think of it this way. Every child is a father, in your case, but not every father is a child. Your second solution would work, although you would have to declare the generic type to be of type Child and that makes it not so much a question about inheritance and more about generics.
Ultimately, at the end of the day, as one of the commenters said, if you really need to know exactly which type the instance is, you may be doing something wrong. The real benefit of inheritance is the ability to decouple the pieces of your code. The client code doesn't care what the actual implementation is, it just knows what methods it needs to call to get something done. Granted, there are some instances where you do need to cast an object because you do need to know exactly what type it is, but that should be a rare occurrence. In this instance the value would be to define a method that takes a Father object as a parameter and understands how to work with the Father interface. All of the methods it would need would be defined as part of the Father class. Other code could create custom subclasses of Father that would allow them to extend the functionality of the class while still allowing them to work with the code designed around the Father interface.
Child cit always return the samec!