In parole povere, un'interfaccia dice quello che devi fare, ma non come

codice:
interface Chiudibile
{
   void close();
}

interface Apribile
{
   void open();
}
Una classe che implementa un'interfaccia deve fare quello che dice l'interfaccia e deve definire un modo per farlo

codice:
class File implements Chiudibile, Apribile
{
   void close()
  {
    // chiudi il file
  }

  void open()
  {
     //apri il file
  }
}

class Porta implements Chiudibile, Apribile
{
   void close()
  {
    // chiudi la porta
  }

  void open()
  {
     //apri la porta
  }
}