Polymorphism - Informatika Unsyiah

advertisement
Polymorphism
Viska Mutiawani, M.Sc
Konsep Penting



Makna polymorphism
Static binding
Dynamic binding
Makna Polymorphism




Polymorphism : polimorfisme
Polymorphism = poly (banyak) + morphos (bentuk) :
banyak bentuk
Polymorphism : kemampuan untuk menghandle
banyak bentuk.
Polymorphism : kemampuan untuk memproses
objek-objek yang berbeda jenis dan class melalui
satu antarmuka yang seragam.
Tipe Polimorfisme

Java memiliki 2 tipe polimorfisme:




Polimorfisme kompilasi (static binding)
Polimorfisme runtime (dynamic binding)
Polimorfisme statis, contoh pada method
overloading.
Polimorfisme dinamis, contoh pada method
overriding.
Contoh sederhana polimorfisme


Semua objek yang memenuhi lebih dari satu relasi is-a
maka objek tersebut polymorphic.
Semua objek di Java: polymorphic
Substitusi




Subkelas mewarisi semua
atribut dan perilaku
superkelas.
Maknanya subkelas dapat
melakukan semua hal
yang dilakukan oleh
superkelas.
Akibatnya, kita dapat
mensubstitusi objek
superkelas dengan objek
subkelasnya.
Inilah yang disebut
substitusi.
Dengan substitusi:
Circle c1 = new
Cylinder(5.0);

Polimorfisme Statis


Contoh pada method overloading.
Sewaktu kompilasi, Java tahu method mana yang
akan dipanggil
Contoh Polimorfisme Statis
Polimorfisme Dinamis

Anggaplah subclass meng-override method tertentu
pada superclass. Andai kita cipta objek dari subclass
dan memasukkannya (via =) dalam superclass.
Walau objek subclass telah dimasukkan pada
superclass, sewaktu objek tersebut memanggil
method yang dioverride, ia tetap memanggil method
yang versi subclassnya, bukan versi superclass.
Contoh Polimorfisme Dinamis



Class Vehicle memiliki method move().
Class MotorBike meng-override method move().
Java akan menunggu saat runtime untuk
menentukan method move() yang mana akan
dipanggil.
Upcasting


Upcasting : substitusi objek subclass pada
superclassnya.
Upcasting selalu aman, karena compiler Java pasti
akan mengecek upcasting yang sah dan akan
mengeluarkan error “incompatible types” jika tidak
sah.
Downcasting


Downcasting : substitusi objek subclass yang
direference ke superclass, dikembalikan ke objek
subclassnya.
Memerlukan casting operator.
Downcasting



Downcasting tidak selalu aman.
Downcasting dapat melempar ClassCastException
jika objek yang didowncast bukan bagian dari
subclass yang benar.
A subclass object can be substituted for its
superclass, but the reverse is not true.
Operator instanceof



Java menyediakan
operator binary
instanceof yang akan
mengembalikan nilai
benar jika objek
memang
instance/anggota dari
class tertentu.
anObject instanceof
aClass
Objek dari subclass
juga merupakan objek
dari superclass.
Kegunaan Polimorfisme


Polimorfisme sangat penting pada PBO, yang
berguna untuk memisahkan antara antarmuka dan
implementasi.
Sehingga programmer dapat lebih fokus sewaktu
mendesain sistem yang kompleks.
Protected access




Private access in the superclass may be too
restrictive for a subclass.
The closer inheritance relationship is supported
by protected access.
Protected access is more restricted than public
access.
We still recommend keeping fields private.

Define protected accessors and mutators.
Access levels
Contoh Polimorfisme

Lihat contoh program yang disediakan.
Method getArea() pada Shape
Apa yang terjadi jika:
public class TestShape {
public static void main(String[] args) { //
Constructing a Shape instance poses
problem!
Shape s3 = new Shape("green");
System.out.println(s3);
System.out.println("Area is " +
s3.getArea());
} }

Download