I don't think the code from Case 1 can even be compiled, so I'm wondering how did you manage to get the output?
The errors you get in Cases 2, 3 are saying that you are trying to override method, but it's signature differs from the one in your superclass.
Note that there is a difference between method overriding and method hiding, which occurs in the context of class methods. You can read more about it
here.