posted 16 years ago
One hint that helped me a lot was the following:
Reference type determines the overloads.
Object type determines overrides.
So in your example you're defining "duplicate" in Shape and in its subclass "Circle". Since this is an override (it can't be an overload because you have not changed the signature) the compiler will know which class to call which means there is no ambiguity here so it will compile correctly.
Quiz time... where will the call for the following examples come from (Shape or Circle):
If you get this example you're golden.
HTH
because .net guys can also write in java