Dalam hal ini obkjek memiliki beberapa bentuk, tergantung ia menunjuk kemana. Dalam hal ini suatu objek atau class dan perubahan perilakunya adalah dari kelas dasar ke kelas turunan, tidak bisa objek kelas turunan menunjuk ke kelas dasar. Polimorfisme dimungkinkan karena adanya mekanisme ikatan dinamis, ikatan ini adalah ikatan yang terjadi ketika program dijalankan (run-time), ikatan yang terjadi pada saat compiling disebut ikatan dinamis. Ikatan dinamis hanya akan terjadi antara suatu objek dinamis dengan metode yang dinamis juga, dalam hal ini metode virtual (maya)
1. Static atau trivial
- Letak Array
- Type Array
#include <>
/* class DENGAN virtual( POLYMORPHISME)==========*/
class tbujursangkar_vir
{
protected :
double panjang; //panjang sisi bujur sangkar
public:
tbujursangkar_vir(double pj) {panjang = pj;}
double panjangf() {return panjang;}
virtual double lebarf() {return panjang;}
double luasf() {return panjangf()*lebarf();}
double keliling() {return 4*panjang;}
};
class tpersegipanjang_vir:public tbujursangkar_vir
{
protected:
double lebar; //lebar persegi panjang
public:
tpersegipanjang_vir(double pj, double lb):
tbujursangkar_vir(pj) {lebar = lb;}
virtual double lebarf() {return lebar;}
double keliling() {return 2*panjang+2*lebar;}
};
//=========================================main===============================//
void main()
{
double a,b;
cout< cout<
tbujursangkar_vir *bujur = new tbujursangkar_vir(a);
tpersegipanjang_vir *persegi = new tpersegipanjang_vir(a,b);
cout<<"===========hasil pada class tbujursangkar================"< cout<<"panjang = "< cout<<"lebar = "< cout<<"luas = "< cout<<"keliling = "<<
cout<<"===========hasil pada class tpersegipanjang================"< cout<<"panjang = "< cout<<"lebar = "< cout<<"luas = "< cout<<"keliling = "<
delete bujur;
delete persegi;
system("pause");
}