Polimorfisme

Pengertian Polimorfisme Dalam Pemrograman Java

Polimorfisme terbagi menjadi dua suku kata yaitu, Poly yang berarti banyak dan Morfisme yang berarti bentuk. Dalam ilmu sains, Polimorfisme (polymorphism) adalah sebuah prinsip dalam biologi di mana organisme atau spesies memiliki banyak bentuk serta tahapan (stages). Prinsip tersebut diterapkan juga pada bahasa Java.

Polimorfisme dalam OOP merupakan sebuah konsep OOP di mana class memiliki banyak “bentuk” method yang berbeda, meskipun namanya sama. Maksud dari “bentuk” adalah isinya yang berbeda, namun tipe data dan parameternya berbeda.

Polimorfisme juga dapat diartikan sebagai teknik programming yang mengarahkan kamu untuk memprogram secara general daripada secara spesifik. Contohnya kita memiliki tiga class yang berbeda yaitu: “Kelinci”, “Kucing”, dan “Sapi”. Di mana ketiga class tersebut merupakan turunan dari class “Hewan”.

Sejalan dengan contoh yang diberikan, kamu diharapkan dapat mengerti dan memahami konsep polimorfisme itu sendiri.

Polimorfisme pada Java memiliki 2 macam yaitu diantaranya:

  1. Static Polymorphism (Polimorfisme statis).

  2. Dynamic Polymorphism (Polimorfisme dinamis).

Perbedaan keduanya terletak pada cara membuat polimorfisme. Polimorfisme statis menggunakan method overloading, sedangkan polimorfisme dinamis menggunakan method overriding. 

Jika sebelumnya kamu belum tahu perbedaan antara method overloading dan method overriding, maka kita akan bahasa juga perbedaan dari keduanya.

Perbedaan Method Overloading dan Method Overriding

Hallo, teman-teman apa kabar? Semoga baik-baik saja ya! 

Pemrograman berorientasi objek atau OOP mempunyai beberapa pilar penting. Hal ini harus kamu pahami. Di antaranya class, object, method, dan inheritance. Dapat kamu lihat dan pelajari pada blog sebelumnya di Apa itu OOP pada Java? Beserta Contohnya.

Lalu apa itu Polimorfisme pada Java? Ingin lebih tahu? Mari kita simak langsung penjelasan berikut ini.

 

Pengertian Polimorfisme

polimorfisme

Polimorfisme terbagi menjadi dua suku kata yaitu, Poly yang berarti banyak dan Morfisme yang berarti bentuk. Dalam ilmu sains, Polimorfisme (polymorphism) adalah sebuah prinsip dalam biologi di mana organisme atau spesies memiliki banyak bentuk serta tahapan (stages). Prinsip tersebut diterapkan juga pada bahasa Java.

Polimorfisme dalam OOP merupakan sebuah konsep OOP di mana class memiliki banyak “bentuk” method yang berbeda, meskipun namanya sama. Maksud dari “bentuk” adalah isinya yang berbeda, namun tipe data dan parameternya berbeda.

Polimorfisme juga dapat diartikan sebagai teknik programming yang mengarahkan kamu untuk memprogram secara general daripada secara spesifik. Contohnya kita memiliki tiga class yang berbeda yaitu: “Kelinci”, “Kucing”, dan “Sapi”. Di mana ketiga class tersebut merupakan turunan dari class “Hewan”.

Sejalan dengan contoh yang diberikan, kamu diharapkan dapat mengerti dan memahami konsep polimorfisme itu sendiri.

Polimorfisme pada Java memiliki 2 macam yaitu diantaranya:

  1. Static Polymorphism (Polimorfisme statis).

  2. Dynamic Polymorphism (Polimorfisme dinamis).

Perbedaan keduanya terletak pada cara membuat polimorfisme. Polimorfisme statis menggunakan method overloading, sedangkan polimorfisme dinamis menggunakan method overriding. 

Jika sebelumnya kamu belum tahu perbedaan antara method overloading dan method overriding, maka kita akan bahasa juga perbedaan dari keduanya.

Perbedaan Method Overloading dan Method Overriding

Tujuan dari method overloading yaitu memudahkan penggunaan atau pemanggilan method dengan fungsionalitas yang mirip.

Aturan Method Overloading

  • Nama method harus sama dengan method lainnya.

  • Parameter haruslah berbeda.

  • Return boleh sama, juga boleh berbeda.

Inilah contohnya.

Misal kamu membuat sebuah class dengan nama Cetak.java. Pada class ini mempunyai method maxNumber(). Perhatikan kode program dibawah ini.

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

public class Cetak {

 

    // Method sama namun parameter berbeda

    // Tipe data double

    static double maxNumber(double a, double b) {

        if (a < b) {

            return a;

        }else{

            return b;

        }  

    }

 

    // Method sama, namun parameter berbeda

    // Tipe data int

    static int maxNumber(int a, int b) {  

        if (a < b){

            return a;

        }else {

            return b;

        }

    }

 

    public static void main(String[] argrs) {

        System.out.println(maxNumber(5.5, 7.5));

        System.out.println(maxNumber(10, 20));

    }

 

}

 

Maka Outputnya:
5.5
10

Telusuri Kode
Coba perhatikan kode program di atas!

Pada class Cetak.java memiliki 2 method yang sama yaitu maxNumber(). Tapi parameter dan tipenya berbeda, yaitu:

  • static double maxNumber(double a, double b)

  • static int maxNumber(int a, int b)

Yang pertama memiliki parameter dan tipe data double, sedangkan satunya lagi memiliki parameter dan tipe data int. Hal ini jelas berbeda. Inilah yang disebut polimorfisme statis. 

Sedangkan Polimorfisme dinamis biasanya terjadi saat kita menggunakan pewarisan (inheritance) dan implementasi interface.

Seperti yang sudah kita ketahui:

Pada pewarisan, kita bisa mewariskan atribut dan method dari class induk ke class anak.

Class anak akan memiliki nama method yang sama dengan class induk dan anak yang lainnya.Di sinilah akan terjadi polimorfisme.

Class anak akan memiliki nama method yang sama, tapi nanti isi dan parameternya bisa berbeda dari class induk.

Karena si class anak melakukan method overriding (menindih method) yang diwariskannya. Polimorfisme dinamis juga bisa terjadi saat menggunakan interface.

Jadi polimorfisme statis hanya terjadi dalam satu class saja.

Sedangkan polimorfisme dinamis terjadi pada saat ada hubungan dengan class lain seperti inheritance.