ABSTRACT CLASS DAN INTERFACE BAB VIII ABSTRACT CLASS DAN INTERFACE Dosen : Bella Hardiyana, S. Kom
Abstract Class Definisi class adalah blueprint/rancangan/desain sebelum dibuatkan objek. Objek dibuat berdasarkan desain (class tersebut). Namun, tidak semua class bisa dijadikan objek. Contoh kasus nyata : Misal ada seorang desainer pakaian men-desain kemeja batik bertangan panjang, maka desain tersebut bisa dibuatkan bajunya oleh desainer tersebut. Misal seorang anak menggambar pemandangan dua buah gunung dan diantara gunung tersebut ada matahari, maka gambar tersebut tidak mungkin bisa dibuatkan aslinya. Desain/gambar yang tidak mungkin dibuatkan objeknya disebut Class Abstract.
Tentang Abstract Class Berikut beberapa hal yang harus diperhatikan, yaitu : Pada dasarnya Abstract Class adalah Class biasa. Umumnya abstract class menempati hirarki tertinggi. Mendefinisikan method-method tanpa body (kosong), yang juga adalah method abstract. Boleh memiliki method yang memiliki body (isi). Ketika class abstract di extends, maka subclass wajib meng-override semua method kosong dari class abstract tersebut, jika tidak maka subclass tersebut akan berubah menjadi class abstract.
Penulisan Abstract Class Berikut adalah format penulisan class abstract, yaitu : <modifier> abstract class <NamaClass> Contoh : public abstract class BangunDatar{} abstract class MahklukHidup{} Berikut adalah format penulisan method abstract, yaitu : <modifier> abstract <returnTipe> <namaMethod> (<*parameter>); public abstract double luas(); public abstract void keliling(double x, double y);
Contoh Abstract Class Berikut contoh format lengkap dari abstract class, yaitu : public abstract class BangunDatar{ public void cetak(){ System.out.println("\nIni adalah Kelas Abstrak"); } public abstract double luas(); public abstract double keliling();
Contoh Praktikum Abstract Class (1) abstract class BangunDatar{ public void cetak(){ System.out.println("\nIni adalah Kelas Abstrak"); } public abstract double luas(); public abstract double keliling();
Contoh Praktikum Abstract Class (2) class Persegi extends BangunDatar{ public double sisi; public Persegi(double sisi){ this.sisi = sisi; } public double luas(){ return sisi*sisi; public double keliling(){ return sisi*4;
Contoh Praktikum Abstract Class (3) class PersegiPanjang extends BangunDatar{ public double panjang; public double lebar; public PersegiPanjang(double panjang, double lebar){ this.panjang = panjang; this.lebar = lebar; } public double luas(){ return panjang*lebar; public double keliling(){ return (2*panjang)+(2*lebar);
Contoh Praktikum Abstract Class (4) class Program{ public static void main(String[] args){ Persegi psg = new Persegi(3); PersegiPanjang psgpjg = new PersegiPanjang(5, 7); psg.cetak(); System.out.println("Rumus Persegi\n====="); System.out.println("Luas Persegi : "+ psg.luas()); System.out.println("Keliling Persegi : "+ psg.keliling()); psgpjg.cetak(); System.out.println("Rumus Persegi Panjang\n====="); System.out.println("Luas Persegi Panjang : "+ psgpjg.luas()); System.out.println("Keliling Persegi Panjang : "+ psgpjg.keliling()); }
Contoh Praktikum Abstract Class (5)
Interface Interface adalah blok yang berisi kumpulan method tanpa body (kosong). Ketika sebuah class mengimplementasikan interface, maka class tersebut tidak ada hubungan hirarki dengan interface yang diimplementasi. Kenapa harus menggunakan interface. Ketika ada 2 atau lebih class yang tidak memiliki hubungan hirarki, tetapi class-class tersebut ingin memiliki method yang sama, maka kita menggunakan interface.
Contoh Kasus Interface Contoh Kasus nyata : Disebuah SD terdapat 3 buah siswa, yang bernama Adi, Budi dan Cecep. Dimana ketiga siswa tersebut tidak memiliki hubungan keluarga sama sekali. Tetapi ketiga siswa tersebut terikat oleh aturan yang sama, padahal ketiga siswa tersebut memiliki orang tua yang berbeda. Konsep seperti ini disebut interface.
Tentang Interface Berikut adalah beberapa hal yang harus diperhatikan, yaitu : Interface setara dengan class, sehingga aturan penamaannya sama dengan class. Ketika mengimplementasikan interface, maka class tersebut tidak menjadi anak dari interface tersebut. Dengan kata lain tidak ada hubungan hirarki. Bisa digunakan bersamaan dengan meng-extends class. Boleh mengimplementasikan lebih dari satu interface. Interface berisikan method-method tanpa body (kosong), dan tidak boleh ada method isi. Ketika class mengimplementasikan interface, maka class tersebut wajib meng-override semua method kosong dari interface tersebut, jika tidak maka program akan error.
<modifier> interface <NamaInterface> Penulisan Interface Berikut adalah format penulisan interface, yaitu : <modifier> interface <NamaInterface> Contoh : public interface ContohInterface{} interface InterfaceWhatever{} Berikut adalah format penulisan method kosong, yaitu : <modifier> <returnTipe> <namaMethod> (<*parameter>); public double luas(); public void keliling(double x, double y);
Contoh Interface Berikut contoh format lengkap dari interface, yaitu : interface Interface1{ public String cetakStr1(String x); public String cetakStr2(String x); } interface Interface2{ public String cetakInt1(int x); public String cetakInt2(int x);
Contoh Praktikum Interface (1) interface Interface1{ public String cetakStr1(String x); public String cetakStr2(String x); } interface Interface2{ public String cetakInt1(int x); public String cetakInt2(int x);
Contoh Praktikum Interface (2) class CetakInfo implements Interface1, Interface2{ public String cetakStr1(String x){ return "Cetak String 1 : "+ x; } public String cetakStr2(String x){ return "Cetak String 2 : "+ x; public String cetakInt1(int x){ return "Cetak Integer 1 : "+ x; public String cetakInt2(int x){ return "Cetak Integer 2 : "+ x;
Contoh Praktikum Interface (3) class Program{ public static void main(String[] args){ CetakInfo cetak = new CetakInfo(); System.out.println(cetak.cetakStr1("Halo Bandung")); System.out.println(cetak.cetakStr2("Halo Jakarta")); System.out.println(cetak.cetakInt1(12)); System.out.println(cetak.cetakInt2(7)); }
Contoh Praktikum Interface (4)
Abstract Class VS Interface Boleh memiliki method isi Hanya berisi method kosong Di-extends Di-implements Ketika di-extends, maka semua method kosong harus di-override, jika tidak maka class tersebut akan berubah menjadi Abstract Class Ketika di-implements, maka semua method kosong harus di-override, jika tidak maka program akan error Satu class hanya bisa meng-extends satu Class Biasa atau Class Abstract Satu class bisa meng-implements lebih dari satu Interface