#16 POLIMORFISME

A. Pengertian Polimorfisme

Polimorfisme (Polymorphism) berasal dari bahasa Yunani:

  • Poly = banyak
  • Morph = bentuk

Dalam PBO, polimorfisme adalah kemampuan objek untuk memiliki banyak bentuk atau kemampuan method untuk berperilaku berbeda meskipun memiliki nama yang sama.

Polimorfisme = method yang sama, perilaku berbeda.

B. Analogi Polimorfisme dalam Kehidupan Nyata

1. Tombol "Power"

  • Di HP → menyalakan layar
  • Di TV → menyalakan TV
  • Di laptop → menyalakan sistem

Nama tombol sama, tetapi fungsinya berbeda tergantung perangkat.

→ Ini sama seperti overriding


2. Perintah “Cetak” (Print)

  • Print dokumen → kertas A4
  • Print foto → kertas glossy
  • Print label → kertas sticker

Nama perintah "print" sama, namun hasilnya beda.

→ Mirip overloading berdasarkan parameter.


C. Tujuan Polimorfisme

  1. Membuat kode lebih fleksibel dan mudah dikembangkan.
  2. Mengurangi duplikasi kode (code duplication).
  3. Memudahkan penggunaan objek yang berasal dari superclass dan subclass.
  4. Mendukung konsep "program to interface, not implementation".


D. Jenis-Jenis Polimorfisme dalam PBO

  1. Compile-Time Polymorphism (Method Overloading)
  2. Runtime Polymorphism (Method Overriding)

 

E. Method Overloading (Polimorfisme Waktu Kompilasi)

Metode dengan nama yang sama, tetapi:

  • jumlah parameter berbeda
  • atau tipe parameter berbeda
  • atau urutan parameter berbeda

Java menentukan method yang dipanggil pada saat compile.

Contoh Overloading

public class Matematika {

    public int tambah(int a, int b) {
        return a + b;
    }

    public double tambah(double a, double b) {
        return a + b;
    }

    public int tambah(int a, int b, int c) {
        return a + b + c;
    }
}

Pembahasan

  • tambah(int, int) → untuk bilangan bulat
  • tambah(double, double) → untuk desimal
  • tambah(int, int, int) → untuk 3 angka

Nama method sama, tetapi parameter berbeda → ini polimorfisme compile-time.


F. Method Overriding (Polimorfisme Waktu Runtime)

Subclass mengubah perilaku method milik superclass.

Terjadi saat runtime (program berjalan).

Syarat Overriding:

  • Nama method sama
  • Parameter sama
  • Dalam subclass
  • Harus ada hubungan inheritance (extends)


Contoh Overriding

Superclass

public class Hewan {
    public void suara() {
        System.out.println("Hewan mengeluarkan suara...");
    }
}

Subclass

public class Kucing extends Hewan {
    @Override
    public void suara() {
        System.out.println("Kucing: Meong!");
    }
}

public class Anjing extends Hewan {
    @Override
    public void suara() {
        System.out.println("Anjing: Guk!");
    }
}

Class Main

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

        Hewan h1 = new Kucing();
        Hewan h2 = new Anjing();

        h1.suara();
        h2.suara();
    }
}

Output

Kucing: Meong!
Anjing: Guk!


G. Pembahasan Polimorfisme Runtime

Variabel Hewan h1 bertipe superclass, tetapi objeknya Kucing.

→ Ketika dipanggil h1.suara(), yang jalan adalah method Kucing.suara().

Inilah polimorfisme: objek berbeda merespons panggilan method yang sama dengan cara yang berbeda.


H. Studi Kasus Sederhana PPLG

Sistem Pembayaran dengan Polimorfisme

Superclass

public class Pembayaran {
    public void bayar() {
        System.out.println("Melakukan pembayaran...");
    }
}
Subclass
public class PembayaranCash extends Pembayaran {
    @Override
    public void bayar() {
        System.out.println("Pembayaran dilakukan dengan tunai.");
    }
}

public class PembayaranQRIS extends Pembayaran {
    @Override
    public void bayar() {
        System.out.println("Pembayaran menggunakan QRIS.");
    }
}

public class PembayaranTransfer extends Pembayaran {
    @Override
    public void bayar() {
        System.out.println("Pembayaran melalui transfer bank.");
    }
}

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

        Pembayaran p;

        p = new PembayaranCash();
        p.bayar();

        p = new PembayaranQRIS();
        p.bayar();

        p = new PembayaranTransfer();
        p.bayar();
    }
}
Output
Pembayaran dilakukan dengan tunai.
Pembayaran menggunakan QRIS.
Pembayaran melalui transfer bank.


I. Kesimpulan Materi

1. Polimorfisme = banyak bentuk, method yang sama berperilaku berbeda.
2. Ada dua jenis utama:
Overloading (compile time)
Overriding (runtime)
3. Polimorfisme membuat program lebih fleksibel, mudah dikembangkan, dan terstruktur
4. Sangat sering digunakan dalam:
- Sistem pembayaran
- Sistem hewan
- Sistem kendaraan
- Desain antarmuka
- Inheritance & interface

Posting Komentar

Lebih baru Lebih lama

Formulir Kontak