Making a concrete method abstract, we have following issues
1- First the overriding class must be abstract. 2- You are killing the availability of concrete implementation of that method by making it abstract. 3- Further concrete classes must override that method extending that class. 4- We may feel that now each extending class must give definition to the methods, where previously concrete implementation of that method was available.But by directly making that class abstract will break the existing code. So as the nature of the language, making a class that extends the previously existing class but with the abstract way, forcing future extending classes to override the methods.
Sorry megha, I didn't mean to be offensive. What I meant to say was that I can't think of a reason why someone would override a non-abstract method with an abstract method, but I also can't see what the problem would be if someone did. I guess, one explanation for that rule would be: to make java more flexible. In case someone is ever inventive or crazy enough to come up with a solution which would require that feature of the java language.
I brought this back from the farm where they grow the tiny ads: