Inheritance
(Pewarisan) merupakan salah satu dari tiga konsep dasar OOP. Konsep inheritance
ini mengadopsi dunia nyata dimana suatu entitas/obyek dapat mempunyai
entitas/obyek turunan. Dalam dunia nyata, suatu entitas turunan dapat mewarisi
apa-apa yang dipunyai dari entitas induknya. Misalkan saja antara entitas Bapak
dan entitas Anak. Entitas anak dapat mewarisi apa-apa yang dipunyai oleh
entitas Bapaknya. Demikian juga dalam konsep inheritance.
Inheritance
merupakan proses pewarisan data dan method dari suatu class yang telah ada
kepada suatu class baru. Class yang mewariskan disebut dengan superclass /
parent class / base class, sedangkan class yang mewarisi (class yang baru)
disebut dengan subclass/ child class / derived class. Subclass tidak
dapat mewarisi anggota private dari superclass-nya. Dengan inheritance, class
yang baru (subclass) akan mirip dengan class yang lama (superclass) namun
memiliki karakteristik yang baru. Dalam Java, subclass hanya bisa memiliki satu
superclass (single inheritance) sedangkan superclass bisa memiliki satu
subclass atau lebih. Untuk menerapkan inheritance, gunakan statement “extends”.
Manfaat
penggunaan konsep pewarisan antara lain:
1. Kita dapat
menggunakan kembali kelas-kelas yang kita buat (sebagai superkelas) dan membuat
kelas-kelas baru berdasar superkelas tersebut dengan karakteristik yang lebih
khusus dari behaviour umum yang dimiliki superkelas.
2. Kita dapat membuat superkelas yang hanya
mendefinisikan behaviour namun tidak memberi implementasi dari metode-metode
yang ada.
Berikut
adalah contoh penerapan dari inheritance :
class Orang{private String nama;private double tinggi;private double berat;public Orang (String nama, double tinggi, double berat) {this.nama = nama;this.tinggi = tinggi;this.berat = berat;}public String toString(){return ("Nama : "+nama+"\n Tinggi : "+ tinggi + "\n Berat : "+berat);}}class Pelajar extends Orang {private String nim;private String asalSekolah;private double nilai; // range: 0-30public Pelajar (String nama, double tinggi, double berat, String nim,String sekolah, double nilai){super(nama,tinggi,berat);this.nim = nim;asalSekolah = sekolah;this.nilai = nilai;}public String toString(){return (super.toString()+"\nNIM : "+nim+ "\nSekolah :"+asalSekolah+"\nNilai :" +nilai);}}class Latihan2b {public static void main(String[] args){Pelajar siswa = new Pelajar("Musa",168, 62,"050107","SMU Pancasila",27.8);System.out.println(siswa.toString());}}
Polimorfisme adalah kemampuan dari
sebuah object untuk membolehkan mengambil beberapa bentuk yang berbeda. Secara
harfiah, “poli” berarti banyak sementara “morph” berarti bentuk.
Kondisi
yang harus dipenuhi supaya polimorfisme dapat diimplementasikan adalah :
1. Method yang
dipanggil harus melalui variabel dari superclass.
2. Method yang
dipanggil harus juga menjadi method dari super class.
3. Signature
method harus sama baik pada superclass maupun subclass.
4. Method access attribute pada
subclass tidak boleh lebih terbatas dari super class.
Class
Bentuk yang merupakan class induk (superclass) dari class Lingkaran,
Elips dan Segitiga mempunyai method gambar() dan hapus().
Class-class anak (subclass) juga mempunyai method gambar() dan hapus().
Meskipun keempat class tersebut mempunyai nama method yang sama, tetapi isi
(source code/yang dilakukan/output) dari masing-masing method tersebut berbeda.
Jika kita menginginkan sebuah objek yang dapat memanggil setiap method (yaitu
method gambar & hapus) yang ada pada setiap class (pada superclass maupun
subclass), maka gunakanlah teknik Polymorphism. Polymorphism hanya
berlaku pada method dan tidak berlaku untuk atribut. Untuk mendapatkan operasi
polymorphism dari suatu method, maka method tersebut haruslah merupakan method
yang ada di class induk (lihat diagram diatas bahwa method gambar() dan hapus(),
selain terdapat di class-class turunan class Bentuk, juga terdapat di class
Bentuk).
Contoh implementasi polymorphism :
class Bentuk{public void gambar(){System.out.println("Menggambar");}public void hapus(){System.out.println("Menghapus Gambar");}}class Lingkaran extends Bentuk{public void gambar(){System.out.println("Gambar Lingkaran");}public void hapus(){System.out.println("Hapus Lingkaran");}}class Elips extends Bentuk{public void gambar(){System.out.println("Gambar Elips");}public void hapus(){System.out.println("Hapus Elips");}}class Segitiga extends Bentuk{public void gambar(){System.out.println("Gambar Segitiga");}public void hapus(){System.out.println("Hapus Segitiga");}}
Berikut ini adalah class yang mengimplimentasikan teknik
polymorphism :
class RandomBentuk{private Random rand = new Random();public Bentuk next() {switch(rand.nextInt(3)){default:case 0: return new Lingkaran();case 1: return new Elips();case 2: return new Segitiga();}}}
class Latihan3a{private static RandomBentuk gen = new RandomBentuk();public static void main(String[] args){Bentuk[] bangun = new Bentuk[3];for(int i = 0; i < bangun.length; i++)bangun[i] = gen.next();for(int i = 0; i < bangun.length; i++)bangun [i].gambar();for(int i = 0; i < bangun.length; i++)bangun [i].hapus();}}
2 Komentar untuk "Inheritance dan Polymorphism dalam Pemrograman Berorientasi Objek Java"
driver nya mana ini
mantab banget gan
solder uap