OK so I gather that Interfaces are a way to enforce that an object implements a certain amount of functionality, without having to use inheritance. Kind of like a contract.
And old thread, I know. But I just read "Interfaces are the only way to create multiple inheritance in Java". This is very wrong, because delegation (or "compositon" as Carl said) is the only way to get multiple inheritance (remember: "delegation is inheritance", well, almost).
You only need interfaces to tell the developer "hey, don't forget to delegate this or that class"! Interfaces are only needed as reminder for a correct delegation (or in general: implementation), but they can't inherite any code. With multiple inheritance interfaces wouldn't be needed at all.
Actually, you don't really need interfaces to create a working program, they're just helpers without any function or functional code. Btw Thomas was very right with the abstract classes, these are far more important than interfaces, because that's where you can get reusable code from.
Normally, when I write a java application I only create interfaces in the very end, as a helper for future programmers. Or I don't create any interfaces at all ;D