Interface mendeklarasikan sebuah kontrak — serangkaian metode yang harus disediakan oleh suatu tipe — dengan sedikit atau tanpa implementasi. Kelas abstrak adalah kelas yang diimplementasikan sebagian yang dapat menyimpan status bersama dan metode konkret tetapi tidak dapat diinstansiasi. Perbedaan utama: sebuah kelas dapat mengimplementasikan banyak interface tetapi hanya mewarisi dari satu kelas.
