Java Interface

Randy Arba
3 min readFeb 13, 2017

Mungkin ada sebagian teman-teman masih bingung dengan istilah interface dalam java. Padahal manfaat interface sangat membantu dalam proyek baik skala besar maupun kecil. Nah, proyek skala kecil memang tidak begitu terlihat dampak kegunaannya dan sering diabaikan. Jumlah kelas tentu akan banyak dan berpengaruh pada debugging kalau tidak memanfaatkan interface. Untuk itulah mari kita dedah dan perdalam ini. Nantinya kita bisa implementasikan interface ini untuk koding teman-teman kedepan agar efektif dan efisien.

Interface yang dibahas disini bukan interface pada UI/UX dan tidak ada kaitannya sama sekali. meski sama-sama memiliki istilah interface tapi interface yang dibahas disini adalah keyword dalam pemrograman java. Sedangkan User Interface/ User Experience (UI/UX) berhubungan tentang desain estetika dan bagaimana pengguna menggunakannya.

Interface adalah class yang tidak memiliki tubuh pada method-methodnya. Method interface tersebut harus diimplementasikan dalam kelas turunannya tidak boleh tidak. Di dalam interface, deklarasi variable memiliki atribut final sehingga bersifat absolut. Keyword final inilah yang menjadi keunikan sendiri bagi interface bahwa ouput dari bagian interface berupa final yang tidak diganti pada saat implementasi kecuali di override.

Keuntungan membuat interface sendiri adalah menutupi kekurangan pada java yang hanya memperbolehkan satu kelas saja yang berhak mendapatkan warisan kelas induk (extends). Sehingga satu kelas hanya dapat menggunakan satu kelas induk, sebaliknya pada interface dapat di implementasi lebih dari satu. Ciri-ciri interface adalah interface tidak dapat di instansiasi, tidak terdapat konstruktor dan semua method interface adalah abstrak.

Mungkin ada yang bertanya-tanya untuk apa sih kegunaan interface ini. Kalau kelas pada java ibarat cetak biru sebuah rumah, kemudian objek adalah rumah yang sudah dibangun dalam bentuk fisik, tentu interface ini hanya cetak biru saja. Cetak biru tanpa implementasi. “loh kalau cuman cetak biru saja berarti nggak diimplementasikan jadi rumah sebenarnya gitu gimana? useless bgt dong”.

Tenang interface tidak se-useless itu, tujuan interface adalah menerapkan teknik polymorhpisme pada java. Jadi kelas turunan dapat bebas mengubah karakteristik yang ada. Analoginya seperti ini, jadi semisal kita ada sebuah perusahaan yang sedang merekrut pekerja (Worker), worker yang dibutuhkan harus memiliki spesialis dibidangnya, seperti akuntan, humas, petugas kebersihan, dll. Nah untuk pekerja (Worker) sendiri tidak didefinisikan detail secara mandiri, namun diimplementasikan oleh spesialis pekerjaannya.

Agar lebih paham itu interface mari lihat contoh berikut:

Dalam kode diatas, kita membuat interface dengan nama Buku yang berisi method cover, judul, dan Bab. Kemudian kita akan mengimplementasikan interface ini kedalam kelas BukuBagus. pertama hal yang kita lakukan adalah memberikan keyword “implement” . Jika teman-teman menggunakan IDE seperti IntellJ maka pesan error akan muncul. Pesan Error tersebut menyatakan bahwa kita belum mengimplementasi method-method yang ada pada interface. Kita wajib mencantumkan semua method yang ada, namun apabila teman-teman ingin membuat salah satunya method tidak ter-implementasikan maka wajib membuat abstrak keyword dikelas tersebut.

Sebagian orang ada yang bingung membedakan interface dengan kelas abstrak. Keyword abstrack bisa ada di kelas dan method, jika kelas menerapkan keyword abstrack maka wajib method-methodnya juga memiliki abstract. Kelas abstract ini tidak dapat di instansiasi, namun hanya dapat di turunkan saja lewat keyword extends. Jika kelas turunan menggunakan kelas abstract wajib baginya untuk mendeklarikan method-method yang ada pada kelas abstract. Abstract kelas hanya mendefinisikan method dan atribut-atributnya di dalam sub kelasnya yang diturunkannya.

Abstrak

  • Dapat meng-extends kelas atau meng-implement interface.
  • Seperti kelas induk secara umum, dapat diakses oleh kelas turunan dengan meng-extends kelas induk.
  • Kelas abstrak dapat menggunakan keyword abstract dan non abstract pada methodnya.
  • Kelas turunan tidak dapat meng-extends lebih dari satu kelas abstract.
  • Dapat mengimplementasi interface
  • kelas abstract dapat menggunakan konstruktor, main method, static method, final atau non final,

Interface

  • Menggunakan keyword “implement” untuk mengimplementasi pada kelas turunan.
  • Interface hanya dapat memiliki abstract pada methodnya.
  • Interface dapat di implementasikan lebih dari satu interface pada kelas turunannya.
  • Interface hanya dapat memiliki final ataupun static pada method dan variable.
  • Interface tidak dapat meng-extends abstrack kelas tapi dapat meng-extends interface lain.
  • Dalam interface tidak dapat menggunakan konstruktor, main method dalam body interface.

Keseluruhan hanya yang kita pelajari diatas bertujuan untuk menurunkan (inherentance) kepada subclass yang ada, sehingga subclass memiliki sifat kelas induk. Ada beberapa istilah inherentance yang ada pada java, dua istilah sudah kita implementasikan diatas yakni abstract dan interface. Pokok dari abstract dan interface adalah untuk mendefinisikan secara luas dari sifat-sifat tertinggi hirearki kelas, kemudian untuk penjelasan detail sifat-sifat kita gunakan pada subclassnya.

--

--