12 Januari, 2010

Polymorphism


                Kemampuan sebuah variabel reference untuk merubah behavior sesuai dengan apa yang dipunyai object.
                polymorphism membuat objek-objek yang berasal dari subclass yang berbeda, diperlakukan sebagai objek-objek dari satu superclass. Hal ini terjadi ketika memilih method yang sesuai untuk diimplementasikan ke objek tertentu berdasarkan pada subclass yang memiliki method bersangkutan.

Untuk menjelaskan polymorphism, mari kita bahas sebuah contoh.

       Pada contoh sebelumnya, kita diberikan parent class yaitu Person dan subclassnya adalah Student, sekarang kita tambahkan subclass lainnya dari Person yaitu Employee

Dalam Java, kita dapat membuat referensi dari suatu superclass ke object dari subclassnya. Sebagai contoh,

public static main( String[] args ) {

   Person  ref;
   Student studentObject = new Student();
   Employee employeeObject = new Employee();
   ref = studentObject; //titik referensi Person kepada                          // sebuah object Student
}

misalnya, kita memiliki sebuah method getName dalam superclass Person. Dan kita meng-override method ini di kedua subclass yaitu Student dan Employee

public class Student {
   public String getName(){
        System.out.println(“Student Name:” + name);
        return name;
   }
}
public class Employee {
   public String getName(){
        System.out.println(“Employee Name:” + name);
        return name;
   }
}

       Kembali ke method utama kita, ketika kita mencoba memanggil method getName dari referensi Person ref, method getName dari object Student akan dipanggil.
       Sekarang, jika kita memberi ref kepada object Employee, maka method getName juga akan dipanggil

public static main( String[] args ) {
     Person  ref;
     Student studentObject = new Student();
     Employee employeeObject = new Employee();
     ref = studentObject; //titik referensi Person kepada object Student
     //getName dari class Student dipanggil
     String temp=ref.getName();
     System.out.println( temp );
     ref = employeeObject; //titik referensi Person kepada  object Employee
    
     //getName dari class Employee dipanggil 
     String temp = ref.getName();
     System.out.println( temp );
}

       Contoh lain yang menggambarkan polymorphism adalah ketika kita mencoba untuk passing reference kepada method
       jika kita memiliki sebuah method static printInformation yang menerima referensi Person sebagai parameter

                public static printInformation( Person p ){
                                     . . . .
     }

Sebenarnya kita dapat passing reference dari Employee dan Student kepada method printInformation selama kedua class tersebut merupakan subclass dari Person

public static main( String[] args )
{
        Student    studentObject = new Student();
        Employee   employeeObject = new Employee();
        printInformation( studentObject );
        printInformation( employeeObject );
}





2 komentar:

Anonim mengatakan...

"Kemampuan sebuah variabel reference untuk merubah behavior sesuai dengan apa yang dipunyai object."

Wrong !! polymorphism lebih berkaitan kepada function/method daripada ke object. Baca Paper strachey atau Cardelli

http://lucacardelli.name/Papers/OnUnderstanding.A4.pdf

Yang cukup menarik, polymorphism yang anda jelaskan di atas, yang dikenal sebagai inclusion polymorphism, justru tidak dikenal dalam paper asli strachey, dan baru ditambahkan dalam paper strachey (di link di atas). Mudah - mudahan salah pengertian tentang polymorphism selama ini bisa berhenti disini.

Anonim mengatakan...

http://lucacardelli.name/Papers/OnUnderstanding.A4.pdf

Posting Komentar