Polimorfisme

Pada tulisan sebelumnya sudah di jelaskan tentang pewarisan, sekarang kan membahas tentang polimorfisme, class induk Person dan subclass Student dari contoh sebelumnya, kita tambahkan subclass lain dari Person yaitu Employee.

Dalam Java, kita dapat membuat referensi yang merupakan tipe dari superclass ke sebuah

object dari subclass tersebut. Sebagai contohnya,

public static main( String[] args )

{

Person

ref;

Student

studentObject = new Student();

Employee

employeeObject = new Employee();

ref = studentObject; //Person menunjuk kepada

// object Student

//beberapa kode di sini

}

Sekarang dimisalkan kita punya method getName dalam superclass Person kita, dan kita override method ini dalam kedua subclasses Student dan Employee,

public class Person

{

public String getName(){

System.out.println(“Person Name:” + name);

return name;

}

}

public class Student extends Person

{

public String getName(){

System.out.println(“Student Name:” + name);

return name;

}

}

public class Employee extends Person

{

public String getName(){

System.out.println(“Employee Name:” + name);

return name;

}

Kembali ke method utama kita, ketika kita mencoba memanggil method getName dari reference Person ref, method getName dari object Student akan dipanggil. Sekarang, jika kita berikan ref ke object Employee, method getName dari Employee akan dipanggil.

public static main( String[] args )

{

Person

ref;

Student

studentObject = new Student();

Employee

employeeObject = new Employee();

ref = studentObject; //Person menunjuk kepada

// object Student

String temp = ref.getName(); //getName dari Student

//class dipanggil

System.out.println( temp );

ref = employeeObject; //Person menunjuk kepada

// object Employee

String temp = ref.getName(); //getName dari Employee

//class dipanggil

System.out.println( temp );

}

Kemampuan dari reference untuk mengubah sifat menurut object apa yang dijadikan acuan dinamakan polimorfisme. Polimorfisme menyediakan multiobject dari subclasses yang berbeda untuk diperlakukan sebagai object dari superclass tunggal, secara otomatis menunjuk method yang tepat untuk menggunakannya ke particular object berdasar subclass yang termasuk di dalamnya.

Contoh lain yang menunjukkan properti polimorfisme adalah ketika kita mencoba melalui reference ke method. Misalkan kita punya method static printInformation yang mengakibatkan object Person sebagai reference, kita dapat me-reference dari tipe Employee dan tipe Student ke method ini selama itu masih subclass dari class Person.

public static main( String[] args )

{

Student

studentObject = new Student();

Employee

employeeObject = new Employee();

printInformation( studentObject );

printInformation( employeeObject );

}

public static printInformation( Person p ){

. . . .

}

Tulis sebuah Komentar