Di bahasa Java, sebuah subclass merupakan turunan langsung dari satu superclass (single inheritance). Java tidak memperbolehkan sebuah subclass diturunkan langsung dari beberapa macam superclass (multiple inheritance). Dengan menggunakan interfes (interface), akan diperoleh efek dari multiple inheritance.

Anda dapat memandang sebuah interface sebagaimana kelas abstrak. Kelas yang dideklarasikan abstrak dapat mempunyai variabel kelas, metoda konkrit, konstanta dan metoda abstrak, sedangkan interface hanya berisi konstanta dan metoda abstrak. Karena semua konstanta di interface dideklarasikan dengan modifier public final static dan metoda dengan modifier public abstract, maka modifier tersebut dapat diabaikan.

Untuk mendeklarasikan sebuah interface, digunakan kata kunci interface sebelum nama interface sebagaimana sintak pendeklarasian di bawah ini.

   modifier interface nama-interface {
      // Deklarasi konstanta
      // Penanda metoda
   }

Sebagaimana kelas abstrak, Anda juga tidak dapat membuat obyek dari interface. Namun demikian, interface juga dapat digunakan sebagai tipe variabel dimana variabel tersebut dapat mengacu ke obyek dari kelas yang mengimplementasikan interface tersebut. Nama sebuah kelas adalah kata benda (noun), namun untuk nama sebuah interface, dapat berupa kata sifat (adjective) maupun kata benda.

Metoda sebuah interface bersifat umum dan tidak berkaitan langsung dengan obyek sebuah kelas, berbeda dengan metoda misalnya hitungKeliling dan hitungLuas yang melekat dan berkaitan langsung dengan obyek dari kelas seperti BujurSangkar, PersegiPanjang, Lingkaran atau juga Segitiga.

Berikut ini adalah contoh program interface DapatDimakan, dimana interface tersebut mempunyai metoda abstrak makanDenganCara. File sumber dari interface DapatDimakan disimpan di direktori c:\filejava\javaapp\sumber\interface dan hasil kompilasi disimpan di direktori c:\filejava\javaapp\kelas\interface.

// Nama file : DapatDimakan.java
// Membuat interface DapatDimakan

// Definisi interface
public interface DapatDimakan {

   // Metoda makanDenganCara
   public abstract String makanDenganCara();
}

Interface DapatDimakan hanya mempunyai satu buah metoda makanDenganCara. Segala sesuatu yang dapat dimakan dapat menggunakan interface ini dan mengimplementasikan metoda abstrak makanDenganCara. Metoda makanDenganCara adalah metoda yang mengembalikan nilai dengan tipe acuan ke String. Nilai yang dikembalikan adalah string yang menggambarkan bagaimana cara memakannya.