Kelas Abstrak (Abstract Class) dan Interface
Pendahuluan
• Kelas merupakan blue print, atau prototipe, yang mendefinisikan variabel dan metodemetode umum untuk semua objek dari jenis tertentu.
• Pada prinsipnya kelas ini adalah definisi statis yang berhubungan dengan pembuatnya (programmer) selanjutnya kelas akan diinstance menjadi objek dan selanjutnya objeklah yang berperan saat aplikasi runtime.
• Dalam beberapa masalah mungkin tidak diinginkan agar kelas tersebut diinstance menjadi objek dengan alasan karna kelas tersebut hanya digunakan untuk menyimpan definisi dan kelas lain lah yang melakukan perluasan terhadap definisi dari kelas tersebut.
• Jika hal tersebut yang akan dilakukan maka kelas tersebut harus terbentuk sebagai kelas abstrak.
Kelas Abstrak
• Sebuah kelas abstrak adalah kelas yang tidak dapat diinstansiasi menjadi sebuah objek.
• Dalam kelas abstrak dapat memiliki method abstrak atau bukan method abstrak
• Method abstrak adalah method yang memiliki definisi tanpa memiliki implementasi.
• Kelas abstrak atau method abstrak didefinisikan menggunakan keyword abstract pada bagian definisi
Contoh kelas abstraks:
• Prinsipnya kelas abstrak tidak dapat diinstansiasi menjadi sebuah objek, oleh karena itu maka kelas abstrak harus melakukan perluasan dengan menurunkan attribut dan method ke kelas lain, dan kelas turunanyalah yang akan diinstansiasikan menjadi objek dengan membawa implementasi dari method yg dimiliki pada kelas abstrak yg merupakan superkelas.
• Oleh karena itu kelas abstrak setidaknya harus memiliki kelas turunan agar dapat digunakan.
Interface
• Interface bukanlah sebuah kelas, interface hanya perangkat yang mendefinisikan aturan perilaku (protocol of behaviour) yang dapat diimplementasikan oleh kelas manapun.
• Interface mendefinisikan satu set method tanpa menyediakan implementasinya.
• interface merupakan kumpulan dari method abstrak dan konstanta
• Setiap kelas yang mengimplementasi sebuah interface terikat kontrak terhadap interface tsb untuk mengimplementasikan semua method yang ada pada interface
• Dengan kata lain, kelas tersebut terikat untuk mengimplementasikan perilaku tertentu yang tertulis dalam interface.
Kelas Abstrak vs Interface
• Interface memiliki kemiripan dengan kelas abstrak dimana keduanya memiliki method abstrak.
• Yang membedakan adalah :
– Interface tidak memiliki implementasi method, sedang kelas abstrak boleh memiliki implementasi method
– Kelas dapat mengimplementasikan lebih dari satu interface namun hanya bisa meng extends satu kelas abstrak
Deklarasi Interface
• Seandainya terdapat sekumpulan objek yang memiliki kemampuan yang sama yakni dapat terbang.
• Maka kita bisa membuat interface public yang memuat method-method yang dibutuhkan untuk membuat implementasi terhadap kemampuan tersebut.
• Contoh interface “flyer” memiliki method abstrak takeOff(), land(), dan fly()/
Contoh Source Code
public interface Flyer {
public void takeOff();
public void land();
public void fly();
}
public class Airplane implements Flyer {
public void takeOff() {
//statement
}
public void land() {
//statement
}
public void fly() {
//statement
}
}
• Suatu interface boleh diimplementasikan oleh lebih dari satu kelas
• Dan satu kelas boleh mengimplementasikan lebih dari satu interface.
Perbedaan Interface dan Kelas Abstrak
Interface :
Tidak dapat membuat implementasi method.
Sebuah kelas dapat Mengimplementasikan beberapa interface
Kelas Abstrak :
Dapat membuat implementasi method.
Sebuah kelas hanya dapat meng-Extends satu superclass.
Mengapa menggunakan interface?
• Mendeklarasikan method yang akan diimplementasikan oleh satu atau beberapa kelas
• Menangkap kesamaan di antara beberapa kelas tanpa perlu memasukkannya dalam hirarki kelas.
• Mensimulasikan konsep pewarisan banyak kelas dengan mendeklarasikan kelas yang mengimplementasikan beberapa interface sekaligus
Kelas yang meng-Implements suatu interface maka kelas tersebut harus mengOverride method yang ada pada interface.
public interface interfaceElektronik
{
public void on();
public void off();
}
public class Radio implements
interfaceElektronik
{
boolean mesin=false;
String[] channel={"Gajah Mada FM","Smart
FM","Buana FM","DINUS FM"};
int volume=0;
public void on()
{
mesin=true;
}
public void off()
{
mesin=false;
}
… Continue
public class Kipas implements
interfaceElektronik {
boolean mesin=false;
int kecepatanKipas=0;
public void on()
{
mesin=true;
}
public void off()
{
mesin=false;
}
… Continue