POLIMORFISME


Sekarang,  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 ){
  . . . .
}