The interface are the public methods of a class. It is what other classes see when they look at your class. The implementation is the actual code behind the interface. As long as you don't change the method signature of your public methods, you can do anything you want inside your methods and I will still be able to compile and execute my code.
Has to do with the concept of Encapsulation. When you write an object that implements an interface, you are making a promise to "clients" (anybody/anything that interacts with the object that implements the interface) that you will provide the services defined in the interface. The clients don't care exactly how you implement the service. As long as the end result is the same, you are free to change how your object does the actual work. It's like using a telephone: you dial a few numbers, you expect to be connected to a specific person. All you, the user/client, care about is that you have a dial tone, a receiver, and a way to dial numbers and that you are patched through to the right person. You don't care about the mechanics of how the connection is made, whether it be by satellite, GSM, PCS, fiber optics, or plain old twisted pair wires, digital or analog, etc. The phone is your interface to the phone company, which provides the service of connecting you to somebody else's phone. J.Lacar