Professional Documents
Culture Documents
BAB 11 - Kegiatan Belajar 14 - Package Dan Interface
BAB 11 - Kegiatan Belajar 14 - Package Dan Interface
Hasil Pembelajaran Setelah menyelesaikan bahasan ini dan mengerjakan soal-soal latihan yang ada, Anda dapat : 1. Memahami apa itu interface 2. Menjelaskan karakteristik interface
Kriteria Penilaian Keberhasilan Anda dalam menguasai bab ini diukur berdasarkan kriteria kemampuan sebagai berikut : 1. Menjelaskan perbedaan interface dengan class abstrak 2. Mendeklarasikan interface 3. Melakukan pewarisan interface 4. Menggunakan interface dalam program Java
Sumber Pustaka 1. Abdul Kadir, 2005, Dasar Pemrograman Java 2, Andi, Yogyakarta. 2. Herbert Schildt, 2005, Java : A Beginners Guide, Third Edition, McGrawHill/Osborne, United States of America. 3. Herbert Schildt, Patrick Naughton , 1999, Java 2 : The Complete Reference, Fourth Edition, McGraw-Hill/Osborne, United States of America. 4. Indrajani, S.Kom., MM., Martin, S.Kom., 2007, Pemrograman Berorientasi Objek dengan Bahasa Java, PT. Elex Media Komputindo, Jakarta.
127
128
karena kelas abstrak juga menentukan bentuk metode untuk sub class. Namun interface dapat dibedakan dengan class abstrak dalam hal seperti berikut ini : 1. Class abstrak dapat mengandung metode abstrak maupun metode tidak abstrak, sedangkan hanya dapat mengandung metode abstrak. 2. Class abstrak dapat mendeklarasikan variabel instan, sedangkan interface hanya dapat mendefinisikan konstanta. 3. Class abstrak digunakan oleh class lain melalui pewarisan (melalui kata kunci extends), sedangkan interface digunakan oleh class tidak melalui mekanisme itu.
Penentu akses public biasa digunakan dengan tujuan agar interface dapat diakses oleh class manapun. Jika tidak ada penentu akses public, interface hanya dapat diakses oleh class-class yang berbeda dalam package yang sama. Jika interface didefinisikan sebagai public, interface tersebut harus disimpan dengan nama depan yang sama dengan nama interface. Variabel dalam interface hanya diperkenankan untuk menggunakan penentu akses public static final, yang sebenarnya menyatakan suatu konstanta (bukan variabel). Kalaupun public static final tidak disertakan, secara implisit akan diperlukan seperti kalau public static final diberikan. Contoh berikut menunjukkan interface yang hanya berisi konstanta :
public interface Warna { public static final int HITAM = 255; public static final int PUTIH = 0;
129
Mengingat public static final dalam interface tidak harus disebutkan secara eksplisit, deklarasi interface Warna di atas dapat ditulis menjadi :
public interface Warna { int HITAM = 255; int PUTIH = 0; }
Adapun penentu akses untuk metode dalam interface hanya bisa berupa public static final, yang menyatakan bahwa metode bertipe abstrak. Penentu tersebut tidak harus dituliskan secara eksplisit karena Java akan menggunakan penentu tersebut sekiranya tidak disebutkan. Berikut ini contoh interface yang mengandung metode, tanpa konstanta :
public interface Bentuk { public abstract void gambar(); public abstract void tentukanWarna(); }
Perhatikan contoh kode di atas, tubuh metode gambar() dan setWarna() tidak ada, karena hanya menyertakan bentuk metode. Mengingat public abstract tidak diharuskan untuk ditulis, deklarasi interface di atas dapat ditulis menjadi seperti berikut ini :
public interface Bentuk { void gambar(); void tentukanWarna(); }
130
Pada contoh di atas, interfacei WarnaLebihLengkap tidak hanya memiliki konstanta ABU_ABU, tetapi juga HITAM dan PUTIH yang diwarisinya dari interface Warna. Berbeda dengan class, suatu interface dapat mewarisi lebih dari sebuah interface. Bentuknya seperti berikut :
public interface NamaInterface extends InterfaceA, InterfaceB { //tubuh interface }
Jika interface yang digunakan lebih dari satu, antar interface dipisahkan oleh tanda koma. Berikut ini contoh program untuk menunjukkan penggunaan interface dalam class :
Langkah 1 : Jalankan Notepad Ketiklah kode program berikut ini pada text editor notepad :
interface IntLampu { public static final int KEADAAN_HIDUP = 1; public static final int KEADAAN_MATI = 0; public abstract void hidupkan(); public abstract void matikan(); } class Lampu implements IntLampu { private int statusLampu = 0; public void hidupkan() { if (this.statusLampu == KEADAAN_MATI) { this.statusLampu = KEADAAN_HIDUP; System.out.println(Lampu Hidup); } else {
131
System.out.println(Lampu sudah hidup); } } public void matikan() { if (this.statusLampu == KEADAAN_HIDUP) { this.statusLampu = KEADAAN_MATI; System.out.println(Lampu Mati); } else { System.out.println(Lampu sudah mati); } } } public class TesInterface { public static void main(String args[]) { Lampu lampuKamar = new Lampu(); lampuKamar.hidupkan(); lampuKamar.hidupkan(); lampuKamar.matikan(); lampuKamar.matikan(); } }
Langkah 2 : Simpan Program Java Simpanlah kode program di atas dengan nama TesInterface.java pada direktori C:\PBO\.
Langkah 3 : Lakukan Kompilasi dan Jalankan Program Lakukan kompilasi dan jalankan program di atas seperti pada gambar berikut ini :
132
Rangkuman
1. Interface merupakan suatu mekanisme yang disediakan oleh Java yang memungkinkan berbagai konstanta atau menentukan bentuk metode yang dapat digunakan oleh sejumlah class. 2. Suatu interface juga dapat mewarisi interface yang lain, seperti sub class mewarisi super class.
Soal-soal Latihan
1. Apa manfaat interface? 2. Apakah interface dan class yang mengimplementasikan interface harus terletak dalam berkas yang sama? 3. Buatlah sebuah interface bernama
Control
dan
ubahlah
class
mengimplementasikan interface Control ini sehingga semua fungsi objek class TelevisiModern tersebut dapat diakses melalui interface tersebut. Buat juga sebuah class baru bernama RemoteControl dimana objek class inilah yang akan menggunakan interface Control untuk mengakses fungsi objek dari class TelevisiModern tersebut!