Polymorfisme di Java

Polymorfisme berarti banyak bentuk, dalam pemrograman berorientasi objek polymorfisme adalah kemampuan sebuah objek berubah bentuk ke bentuk lain, polymorfisme erat kaitannya dengan inheritance. Kita buat class parent bernama Pegawai, ketikkan sintaks berikut ini:

class Pegawai {
    //buat field nama
    String nama;

    //buat constructor Pegawai, parameternya nama
    Pegawai(String nama){
        this.nama = nama; //this.nama mengacu ke field, nama setelah tanda = mengacu ke parameter
    }

    void sayHello(String nama){
        System.out.println("Hi "+ nama + ", nama saya Pegawai "+ this.nama);
    }
}
 

Lalu buat class bernama Manager sebagai class childnya, ketikkan sintaks berikut ini:

class Manager extends  Pegawai{
    //buat field bernama company
    String company;

    //membuat constructor di class child, parameternya: nama
    Manager(String nama){
        super(nama);
    }

    //membuat constructor dengan parameter nama dan company
    Manager(String nama, String company){
        super(nama); //super berfungsi akses constructor di class parent
        this.company = company;
    }

    void sayHello(String nama){
        System.out.println("Hi "+ nama + ", nama saya Manager "+ this.nama);
    }
}

kita buat class child lagi, tuliskan sintaks berikut ini:

class Karyawan extends Manager{
    //harus akses constructor dr class parent, kita buat cosntructor Karyawan
    Karyawan(String nama){
        super(nama); //super berfungsi akses sonstructor di class parent
    }
    void sayHello(String nama){
        /*method overriding, krn membuat method yang sama dengan yang ada
        di class parent, tapi kita tandai dengan mengganti kata manager (di class parent)
        dengan karyawan (di class child)
         */
        System.out.println("Hi "+ nama + ", nama saya karyawan "+ this.nama);
    }
}

Kita buat class utamanya bernama PolymorfismeApp, ketikkan sintaks di bawah ini:

public class PolymorfismeApp {
    public static void main(String[] args) {

        //buat objek pegawai dari class Pegawai
        Pegawai pegawai = new Pegawai("Pauzan");
        pegawai.sayHello("Aufa"); //yg dieksekusi adalah method di dalam class Pegawai

        //merubah bentuk(polymorfisme) objek pegawai ke objek yg dimiliki Manager
        pegawai = new Manager("Budi");
        pegawai.sayHello("Chandra");//maka method yang ada di class Manager yang diakses

        //merubah bentuk objek pegawai ke Karyawan (polymorfisme)
        pegawai = new Karyawan("Eko");
        pegawai.sayHello("Rudi");//method sayHello yang ada di class Karyawan ayng diakses
    }
}

Jika kita run maka hasilnya adalah sebagai berikut:

Hi Aufa, nama saya Pegawai Pauzan
Hi Chandra, nama saya Manager Budi
Hi Rudi, nama saya karyawan Eko

Kita juga bisa menerapkan polymorfisme untuk mempersingkat penulisan method, maksudnya jika kita kenakan method yang sama pada objek yang berbeda-beda maka kalau tanpa polymorfisme kita akan menulis ulang method tersebut berkali-kali tapi dengan polymorfisme cukup instantiate sekali saja, lalu pada main function kita dapat memanggilnya meskipun dikenakan pada objek class yang berbeda-beda. Perhatikan sintaks berikut ini:

public class PolymorfismeApp {
    public static void main(String[] args) {

        //buat objek pegawai dari class Pegawai
        Pegawai pegawai = new Pegawai("Pauzan");
        pegawai.sayHello("Aufa"); //yg dieksekusi adalah method di dalam class Pegawai

        //merubah bentuk(polymorfisme) objek pegawai ke objek yg dimiliki Manager
        pegawai = new Manager("Budi");
        pegawai.sayHello("Chandra");//maka method yang ada di class Manager yang diakses

        //merubah bentuk objek pegawai ke Karyawan (polymorfisme)
        pegawai = new Karyawan("Eko");
        pegawai.sayHello("Rudi");//method sayHello yang ada di class Karyawan ayng diakses

        //penerapan lain dari polymorfisme
        sayHello(new Pegawai("Pauzan"));//mengenakan method sayHello ke objek new Pegawai
        sayHello(new Manager("Aufa")); //mengenakan method sayHello ke objek new Manager
        sayHello(new Karyawan("Budi")); //mengenakan method sayHello ke objek new Karyawan
    }
    //instantiate method sayHello untuk penerapan polymorfisme
    static void sayHello(Pegawai pegawai) { //tipe data Pegawai parameter pegawai
        System.out.println("Hallo " + pegawai.nama);
    }
}

Jika kita run maka hasilnya sebagai berikut:

Hi Aufa, nama saya Pegawai Pauzan
Hi Chandra, nama saya Manager Budi
Hi Rudi, nama saya karyawan Eko
Hallo Pauzan
Hallo Aufa
Hallo Budi

 

 

PREVIOUS: Super Constructor
NEXT: Type check dan Casts

KE DAFTAR ISI

Leave a Reply

Your email address will not be published. Required fields are marked *