 <p>Assuming you understand class inheritance, I think of an Interface like a skeleton class, where the structure of a class is described but not actually written/implemented.</p> <p>Another class can then work with any class that implements a particular Interface even if it hasn't been implemented yet.</p> <p>For example, someone may create an Interface called <code>Animal</code>. Its methods maybe: <code>Talk()</code>, <code>Walk()</code> and <code>Eat()</code>. You could write a <code>Dog</code> class that implements <code>Animal</code> that prints "woof" when the <code>Talk()</code> method is called. Therefore another class will know how to work with all classes that implements the Animal interface.</p> <p><strong>UPD</strong></p> <p>A good real world example is the JDBC Database Statement Interface. This sets out a number of required properties that a database manufacturer will have to implement, such as <code>execute(String sql)</code>. Oracle will implement this differently from Postgresql. This allow the database to be swapped for another one but the user code remains the same.</p>