I am quite confused with redefinition. In KB book it mentioned that overrriding is different from Redefinition.

When you override a method you open the door of having polymorphic behavior. That is calling subclass version of the method using parent class reference.

So far redefing is concerned, there is nothing like polymorphism. Redefining takes place in case of static methods because static methods can't be overridden (they are class specific things).

Look at the following example:

You can see easily, while redefining a method is different, it simply hides the parent class method. While overriding a method gives you avail run time method invocation decision on behalf of what type of object your reference variable is holding instead of the type of reference variable(that is taking place when calling static methods).