Interfaces declare what behavior and characteristics an object will have when implemented. They are explicitly abstract, which is why you still need to define actual implementations on your objects later.
A fairly classic example and description was provided in the answer to this question.