In C#, you have to declare your virtual methods. Maybe you are thinking about JAVA?
Change your method signatures to:
public virtual void ReturnContents(Jewels safeContents, Owner owner)
for the base class, and :
public override void ReturnContents(Jewels safeContents, Owner owner)
for the child class.
Hiding happens when a child class redefines a method that a base class has already defined. In this case, the run-time will invoke the method of the referenced type and not use polymorphism. If this behavior is desired, you should mark the method in the subclass with the "new" keyword. If you want to use polymorphism however, you need to declare the base class's method as virtual and use the "override" keyword for the method in the child class.
You would use hiding in the case where you want to use most of the code in a base class, but you want to have new behavior in your class for a certain method and expose this to all sub-classes of the one you are defining to use hiding. This would keep from altering the behavior of the base class for its internal calls to the method, but would still allow you to offer a new implementation to the users of your new class.