Briefly, a refactoring is a structural change to a program that improves its design, without changing its visible behavior.
Common examples are moving a method, generalizing classes to a base class, and encapsulating methods into a delegate.