Anda di halaman 1dari 19

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 Dengan substitusi:
atribut dan perilaku Circle c1 = new
superkelas. Cylinder(5.0);
 Maknanya subkelas dapat
melakukan semua hal
yang dilakukan oleh
superkelas.
 Akibatnya, kita dapat
mensubstitusi objek
superkelas dengan objek
subkelasnya.
 Inilah yang disebut
substitusi.
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());
} }

Anda mungkin juga menyukai