Polymorphism merupakan suatu aksi
yang memungkinkan pemrogram menyampaikan pesan tertentu keluar dari hirarki
obyeknya, dimana obyek yang berbeda memberikan tanggapan/respon terhadap pesan
yang sama sesuai dengan sifat masing-masing obyek.
1. Inheritance
Inheritance atau pewarisan pada pemrograman berorientasi
objek merupakan suatu hubungan dua buah kelas atau lebih. Dalam hal ini ada
kelas yang memiliki atribut dan metode yang sama dengan kelas lainnya beserta
atribut dan metode tambahan yang merupakan sifat khusus kelas yang menjadi
turunannya.
Salah satu konsep dasar dari pemrograman berbasis objek pada
java adalah Inheritance, berikut ini sedikit gambaran tentang inheritance. Pada
dasarnya, kita melakukan inheritance(pewarisan) untuk membuat suatu class
baru(class turunan/subclass) yang masih memiliki sifat atau spesifikasi dari
superclass.
Di dalam Java untuk mendeklarasikan suatu class sebagai
subclass dilakukan dengan cara menambahkan kata kunci extends setelah deklarasi
nama class, kemudian diikuti dengan nama parent class-nya. Kata kunci extends
tersebut memberitahu kompiler Java bahwa kita ingin melakukan perluasan class.
Contoh implementasi
inheritance :
public class Pegawai {
public String nama;
public double gaji;
}
public class Manajer extends Pegawai {
public String departemen;
}
Pada saat class Manajer menurunkan atau memperluas (extend)
class Pegawai, maka ia mewarisi data member yang dipunyai oleh class Pegawai.
Dengan demikian, class Manajer mempunyai data member yang diwarisi oleh Pegawai
(nama, gaji), ditambah dengan data member yang ia punyai (departemen).
Beberapa aturan tentang pewarisan(inheritance) yang perlu
diperhatikan :
1. Java hanya memperkenankan adanya single inheritance.
Konsep single inheritance hanya memperbolehkan suatu sublass mempunyai satu
parent class. Dengan konsep single inheritance ini, masalah pewarisan akan
dapat diamati dengan mudah.
2. Subclass juga merupakan class biasa, maka kita tetap
dapat melakukan pewarisan pada subclass ini. Misal : class B merupakan subclass
dari class A, kita dapat membuat class baru yang diturunkan dari class B
sehingga class baru tersebut akan memiliki apa yang dimiliki oleh class A dan
class B.
3. Suatu parent class dapat tidak mewariskan sebagian
member-nya kepada subclass-nya. Sejauh mana suatu member dapat diwariskan ke
class lain, ataupun suatu member dapat diakses dari class lain, sangat
berhubungan dengan access control (kontrol pengaksesan).
4. Kata kunci super dipakai untuk merujuk pada member dari
parent class, sebagaimana kata kunci this yang dipakai untuk merujuk pada
member dari class itu sendiri. Adapun format penulisannya adalah sebagai
berikut:
super.data_member -> merujuk pada data member pada parent
class
super.function_member() -> merujuk pada function member
pada parent class
super() -> merujuk pada konstruktor pada parent class
Contoh Program Java
Inheritance :
class Parent {
public int x = 5;
}
class Child extends Parent {
public int x = 10;
public void Info(int x) {
System.out.println("Nilai x sebagai parameter = "
+ x);
System.out.println("Data member x di class Child =
" + this.x);
System.out.println("Data member x di class Parent =
" +
super.x);
}
}
public class NilaiX {
public static void main(String args[]) {
Child tes = new Child();
tes.Info(20);
}
}
2. Polymorphism
Polymorphism, suatu aksi yang memungkinkan pemrogram
menyampaikan pesan tertentu keluar dari hirarki obyeknya, dimana obyek yang
berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai dengan
sifat masing-masing obyek.
Atau Polymorphic dapat berarti banyak bentuk, maksudnya
yaitu kita dapat menimpa (override), suatu method, yang berasal dari parent
class (super class) dimana object tersebut diturunkan, sehingga memiliki
kelakuan yang berbeda.
olymorphism adalah salah satu dari tiga kemampuan yang
mendasar yang dimiliki oleh OOP, setelah data abstraction dan
inheritance.Polymorphism menyediakan cara yang berbeda pada pemisahan interface
dari implementasinya, untuk memasangkan ulang apa dari bagaimana. Polymorphism
memberikan organisasi kode yang lebih baik dan kode menjadi lebih mudah dibaca,
juga memberikan suatu kemampuan pada program untuk berkembang secara terus
menerus baik pada tahap pengembangan awal ataupun pada saat ingin menambahkan
kemampuan-kemampuan yang baru.
Dalam pembahasan ini kita akan menjelaskan tentang
polymorphism (juga disebut sebagai dynamic binding atau late binding atau
run-time binding) mulai dari yang paling dasar, dengan contoh yang membeberkan
tentang pengaruh polymophism dalam program yang akan dibuat.Sebelumnya kita
mengetahui kalau sebuah object dapat digunakan sebagai tipenya sendiri atau
sebagai object dari tipe asalnya. Mengambil handle sebuah object dan memperlakukannya
sebagai handle dari tipe asal disebut sebagai upcastingkarena urutan dari
cabang-cabang inheritance digambarkan class asal terletak yang paling atas.
Contoh program
sederhana Polymorphism :
class A
{
void x()
{
System.out.println("A.x()");
}
void y()
{
System.out.println("A.y()");
}
}
class B extends A
{
/*
*Kelas B akan
memiliki 3 buah method, yaitu x,y dan z
*/
//Method y di
overriding
void y()
{
System.out.println("B.y()");
}
//method z yang
hanya ada di B
void z()
{
System.out.println("B.z()");
}
}
class MyInheritance03
{
public static void
main(String[] args)
{
A a = new
A(); //bukan polymorphisme
A ab = new
B(); //POLYMORPHISME !!!
B b = new
B(); //bukan polymorphisme
System.out.println("\nA a = new A()");
a.x();
a.y();
/*
*Method-method yang dapat dipanggil dari variabel
*reference ab
hanyalah method x dan y sebab type
*dari ab
adalah A.
*/
System.out.println("\nA ab = new B()");
ab.x(); //x
yang dijalankan adalah x dari A
ab.y(); //y
yang dijalankan adalah y dari B
//ab.z() //tidak ada !!!
System.out.println("\nB b = new B()");
b.x();
b.y();
b.z();
}
}
Tidak ada komentar:
Posting Komentar