370 likes | 1.03k Views
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 .
E N D
Polymorphism ViskaMutiawani, M.Sc
KonsepPenting • Makna polymorphism • Static binding • Dynamic binding
Makna Polymorphism • Polymorphism : polimorfisme • Polymorphism = poly (banyak) + morphos (bentuk) : banyakbentuk • Polymorphism : kemampuanuntukmenghandlebanyakbentuk. • Polymorphism : kemampuanuntukmemprosesobjek-objek yang berbedajenisdan class melaluisatuantarmuka yang seragam.
TipePolimorfisme • Java memiliki 2 tipepolimorfisme: • Polimorfismekompilasi (static binding) • Polimorfisme runtime (dynamic binding) • Polimorfismestatis, contohpada method overloading. • Polimorfismedinamis, contohpada method overriding.
Contohsederhanapolimorfisme • Semuaobjek yang memenuhilebihdarisaturelasiis-amakaobjektersebut polymorphic. • Semuaobjekdi Java: polymorphic
Substitusi • Subkelasmewarisisemuaatributdanperilakusuperkelas. • Maknanyasubkelasdapatmelakukansemuahal yang dilakukanolehsuperkelas. • Akibatnya, kitadapatmensubstitusiobjeksuperkelasdenganobjeksubkelasnya. • Inilah yang disebutsubstitusi. • Dengansubstitusi: Circle c1 = new Cylinder(5.0);
PolimorfismeStatis • Contohpada method overloading. • Sewaktukompilasi, Java tahu method mana yang akandipanggil
PolimorfismeDinamis • Anggaplah subclass meng-override method tertentupadasuperclass. Andaikitaciptaobjekdari subclass danmemasukkannya (via =) dalamsuperclass. Walauobjek subclass telahdimasukkanpadasuperclass, sewaktuobjektersebutmemanggil method yang dioverride, iatetapmemanggil method yang versisubclassnya, bukanversisuperclass.
ContohPolimorfismeDinamis • Class Vehicle memiliki method move(). • Class MotorBikemeng-override method move(). • Java akanmenunggusaat runtime untukmenentukan method move() yang manaakandipanggil.
Upcasting • Upcasting : substitusiobjek subclass padasuperclassnya. • Upcastingselaluaman, karena compiler Java pastiakanmengecekupcasting yang sahdanakanmengeluarkan error “incompatible types” jikatidaksah.
Downcasting • Downcasting : substitusiobjek subclass yang direferencekesuperclass, dikembalikankeobjeksubclassnya. • Memerlukan casting operator.
Downcasting • Downcastingtidakselaluaman. • DowncastingdapatmelemparClassCastExceptionjikaobjek yang didowncastbukanbagiandari 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 akanmengembalikannilaibenarjikaobjekmemang instance/anggotadari class tertentu. • anObjectinstanceofaClass • Objekdari subclass jugamerupakanobjekdarisuperclass.
KegunaanPolimorfisme • Polimorfismesangatpentingpada PBO, yang bergunauntukmemisahkanantaraantarmukadanimplementasi. • Sehingga programmer dapatlebihfokussewaktumendesainsistem 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.
ContohPolimorfisme • Lihatcontoh program yang disediakan.
Method getArea() pada Shape • Apa yang terjadijika: 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()); } }