Materi
Interface mendaftar method yang wajib dimiliki sebuah kelas, tanpa isinya. Kelas yang menulis implements NamaInterface berjanji menyediakan semua method itu. Variabel boleh bertipe interface, dan isinya objek dari kelas mana pun yang mengimplementasikannya; method yang dijalankan adalah milik objeknya, bukan milik tipe variabelnya.
interface Ongkir {
int biaya(int beratKg);
}
class Reguler implements Ongkir {
public int biaya(int beratKg) {
return 9000 * beratKg;
}
}
class Kilat implements Ongkir {
public int biaya(int beratKg) {
return 15000 + 9000 * beratKg;
}
}Dengan Ongkir o = new Kilat();, pemanggilan o.biaya(2) menjalankan versi Kilat dan menghasilkan 33000. Kode yang memakai Ongkir tidak perlu tahu kelas mana yang ada di baliknya, sehingga jasa kirim baru cukup ditambah sebagai kelas baru. Interface sendiri tidak bisa dibuat objeknya; new Ongkir() ditolak javac dengan error: Ongkir is abstract; cannot be instantiated.