Pengertian Polymorphism
Polymorphism adalah sebuah fitur yang ada pada bahasa pemrograman C++. digunakan untuk memberikan kemampuan pada function pada anggota class, untuk memberikan seolah-olah function tersebut memiliki berbagai bentuk yang sesuai berdasarkan class masing-masing.
Ketika menggunakan Polymorphism, jika kita mencoba untuk memanggil sebuah member function, maka program akan merespon dengan member function yang sesuai berdasarkan yang ada pada object dan class yang digunakan.
Agar lebih mudah dipahami, Berikut penulis akan membuat 2 program dimana yang satu tidak menggunakan kemampuan Polymorphism dan yang satu menggunakan kemampuan Polymorphism.
Tanpa kemampuan Polymorphism:
#include <iostream> using namespace std; class seseorang{ public: void pesan(){ cout<<"Pesan dari seseorang"<<endl; } }; class budi:public seseorang{ public: void pesan(){ cout<<"Pesan dari budi"<<endl; } }; class andi:public seseorang{ public: void pesan(){ cout<<"Pesan dari andi"<<endl; } }; int main(){ seseorang *obyek; budi a; andi b; obyek = &a; obyek->pesan(); obyek = &b; obyek->pesan(); return 0; }
Hasil:
Pesan dari seseorang
Meskipun object obyek
mengarah pada object a
dan b
, tapi karna tidak menggukan fitur Polymorphism, maka function pesan()
tidak dapat diwakilkan dengan function yang dimiliki oleh masing-masing class.
Untuk membuat function pada class di atas memiliki kemampuan Polymorphism, kita membutuhkan kata kunci virtual
sebelum tipe data function pada base class.
Pengertian Virtual Function
Virtual function adalah sebuah member function yang didirikan di dalam base class dan overridden oleh derived class. Ketika anda menunjuk ke suatu object yang dibuat dari derivered class dengan menggunakan sebuah object pointer yang dibuat menggunakan base class, anda dapat memanggil sebuah function yang dibuat sebagai virtual function. setiap pemanggilan function, akan mengeksekusi masing-masing function berdasarkan yang dimiliki oleh class yang ditunjuk.
Contoh penulisan:
class seseorang{ public: virtual void pesan(){ cout<<"Pesan dari seseorang"<<endl; } };
Contoh program:
#include <iostream> using namespace std; class seseorang{ public: virtual void pesan(){ cout<<"Pesan dari seseorang"<<endl; } }; class budi:public seseorang{ public: void pesan(){ cout<<"Pesan dari budi"<<endl; } }; class andi:public seseorang{ public: void pesan(){ cout<<"Pesan dari andi"<<endl; } }; int main(){ seseorang *obyek; budi a; andi b; obyek = &a; obyek->pesan(); obyek = &b; obyek->pesan(); return 0; }
Pesan dari andi
Tambahan : Pure virtual function
Pure virtual function merupakan nama dari tindakan untuk membuat abtraksi pada class, dengan cara mendefinisikan sebuah virtual function tanpa definisi.
Jika saat anda membuat kemampuan Polymorphism pada class-class anda dan berpikiran bahwa virtual function yang berada di base class sebenarnya tidak membutuhkan definisi, maka anda dapat membuat sebuah “pure vitual function” dengan cara seperti berikut.
Contoh penulisan:
class seseorang{ public: virtual void pesan()=0; };
Contoh Program:
#include <iostream> using namespace std; class seseorang{ public: virtual void pesan()=0; }; class budi:public seseorang{ public: void pesan(){ cout<<"Pesan dari budi"<<endl; } }; class andi:public seseorang{ public: void pesan(){ cout<<"Pesan dari andi"<<endl; } }; int main(){ seseorang *obyek; budi a; andi b; obyek = &a; obyek->pesan(); obyek = &b; obyek->pesan(); return 0; }
Lanjutkan gan!