Polymorphism merupakan kemampuan suatu method untuk bekerja dengan lebih dari satu tipe argumen. Pada bahasa lain (khususnya C++), konsep ini sering disebut dengan method overloading. Pada dasarnya, Python tidak menangani hal ini secara khusus. Hal ini disebabkan lantaran Python merupakan suatu bahasa pemrograman yang bersifat dynamic typing yaitu tidak memerlukan deklarasi tipe.
Polymorphism adalah suatu object sanggup mempunyai banyak sekali bentuk, sebagai object dari class sendiri atau object dari superclassnya
- Overloading : Penggunaan satu nama untuk beberapa method yang berbeda (beda parameter)
- Overriding : terjadi ketika deklarasi method subclass dengan nama dan parameter yang sama dengan method dari superclassnya.
Polymorphism berasal dari bahasa Yunani yang berarti banyak bentuk. Dalam PBO, konsep ini memungkinkan digunakannya suatu interface yang sama untuk memerintah objek biar melaksanakan agresi atau tindakan yang mungkin secara prinsip sama namun secara proses berbeda.
Keuntungan Pemograman dengan memakai Polymorphism yaitu :
• Kita sanggup memakai kelas-kelas yang kita buat (sebagai super kelas) dan membuat kelas kelas gres berdasar superkelas tersebut dengan karakteristik yang lebih khusus dari behaviour umum yang dimiliki superkelas.
• kita sanggup membuat super kelas yang hanya mendefinisikan behaviuor namun tidak memperlihatkan implementasidari metode-metode yang ada.Hal ini berkhasiat jikalau kita ingin membuat semacam template kelas,kelas semacam ini disebut kelas abnormal lantaran behaviournya masih abnormal dan belum diimplementasikan.subkelas-subkelas dari kelas semacam ini yang disebut kelas konkret,mengimplementasikan behaviuor abnormal tersebut sesuai dengan kebutuhan masing-masing.
• Menghindari duplikasi object,kita sanggup membuat class gres dari class yang sudah ada,sehingga tidak perlu menuliskan code dari nol ataupun mengulangnya, namun tetap bisa menambahkan attribute dan atau method unik dari class itu sendiri. Dalam konsep yang lebih umum sering kali polymorphism disebut dalam istilah satu interface banyak aksi.
Polymorphism dapat berarti banyak bentuk, maksudnya yaitu kita sanggup menimpa (override), suatu method, yang berasal dari parent class (super class) dimana object tersebut diturunkan, sehingga mempunyai kelakuan yang berbeda.
Pada dasarnya ada 2 tipe polymorphism, yaitu:
1. Static atau trivial merupakan, function overloading (penggunaan kembali nama fungi yang sama tapi dgn argumen yang berbeda) yang terbagi dalam 3 signature yaitu:
– Jenis Array
– Letak Array
– Type Array
Contoh function overloading :
void tambah (int a, int b);
void tambah(float d, float c);
2. Dynamic atau true Merupakan function overriding (sebuah fungsi dalam class turunan yang mempunyai nama, return type argumen function yang sama dengan fungsi dalam class induk). Menggunakan virtual method.
Pure Virtual Method (tanpa function body)
contoh : virtual void jalan() = 0;
Squasi Virtual Method (ada function body)
contoh : virtual void info() {;}
Dari hasil yang kita peroleh di atas, sanggup kita simpulkan sebagai berikut:
1) Perihal polymorphisme:
a) Variable a dan c yaitu tipe Alfabet dan juga Huruf. NAMUN, compiler mengetahui a dan c sebagai tipe Alfabet. Oleh lantaran itu ketika static (class) method dari masing-masing object a dan c dipanggil, yang dihukum yaitu static method milik Alfabet, bukan Huruf. Hal ini dikarenakan pada ketika compiling, pemanggilan method cetak2() dari a dan b dirubah menjadi Alfabet.cetak2() pada kedua kasusnya. Hal ini tentunya bertentangan dengan hasil running pada ketika kita letakkan break point di atas yang menyatakan bahwa variable a dan c yaitu tipe Huruf.
b) Variable a dan c mempunyai tipe baik Alfabet maupun Huruf. Namun perlu diperhatikan bahwa setiap Huruf yaitu Alfabet, namun setiap Alfabet belum tentu Huruf. Sehingga, kita tidak bisa menuliskan ibarat di bawah ini lantaran compiler mengetahuinya bahwa c yaitu tipe Alfabet sedangkan d yaitu Huruf, tanpa mengetahui tipe sesudah runtime.
c) Alfabet a = new Huruf() akan selalu memanggil constructor Huruf(). Ini yaitu ketentuan baku syntax new yang menyatakan bahwa new membutuhkan postfix argument berupa constructor. Sehingga, walaupun ada tipe Alfabet pada pernyataan ini, namun yang dijalankan yaitu constructor yang menjadi argument dari new, dalam hal ini constructor milik class Huruf.
2) Perihal overriding dan hiding methods:
Seperti pada goresan pena sebelumnya dinyatakan bahwa pada overriden methods, yang dipanggil selalu yaitu milik subclass. Hal ini sesuai dengan syntax yang kita gunakan juga, yakni contohnya c.cetak(). Pada hidden methods, yang dipanggil tergantung siapa yang memanggil. Sebagai static method, pemanggilannya harus disertakan class yang dimaksud, yakni Alfabet.cetak2() atau Huruf.cetak2(). Oleh akibatnya hasil yang diberikan yaitu sesuai dengan definisi method dari class yang dipanggil.
Contoh Program Menggunakan C# :
Hasil Program nya ..
Contoh Program Menggunakan C++
Alhasil ..
Contoh Program Yang Menggunakan Java ...
Hasil Program nya ...
Semoga Bermanfaat bro ..
#RPLWajibNgulik