Salah satu dari karakteristik Object Oriented Programming (OOP) adalah Polymorphism.
Polymorphism itu suatu obyek yang memiliki sifat yang sama dengan parent nya atau pada class nya sendiri. Sifat obyeknya ini bisa dalam bentuk yang berbeda-beda. Bisa terjadi banyak perubahan sifat pada subclass nya.
Polymorphism itu sendiri terbagi dua yaitu: Overloading dan Overiding.
Overiding sifatnya menimpa suatu obyek dari class itu sendiri atau subclassnya. Misalnya kita punya class Kendaraan sebagai suatu parent class.
class Kendaraan{
String jenisKendaraan;
int tahunBuat;
//method jenisKendaraan
void jenisKendaraan(String JK){
jenisKendaraan = JK;
System.out.println(”Jenis Kendaraan: “+jenisKendaraan);
}
//method tahunBuat
void tahunBuat(int TB){
tahunBuat = TB;
System.out.println(”Tahun Buat: “+tahunBuat);
}
}
Lalu kita buatkan subclass dan di overide method tahunBuatnya dengan contoh berikut ini
public class SepedaMotor extends Kendaraan{
String merkMotor;
int tahunIni;
public void merkMotor(String merkM){
merkMotor = merkM;
System.out.println(”Merk Kendaraan: “+merkMotor);
}
//melakukan overiding
void tahunBuat(int TB){
tahunBuat = TB;
tahunIni = 2008-tahunBuat;
System.out.println(”Sudah “+tahunIni+ ” tahun, sejak motor ini dibuat”);
}
}
Kemudian kita coba jalankan dengan program berikut:
classMotorAksi
public static void main(String[]args){
//buat object
SepedaMotor motorku = new SepedaMotor();
//panggil method
Motorku.jenisKendaraan(“Sepeda Motor”);
Motorku.tahunBuat(2006);
}
}
Nah ketika dicoba
lihat hasilnya bila method tahunBuat di class SepedaMotor di hilangkan.
Kemudia di compile lagi class SepedaMotor dan jalankan lagi MotorAksi nya
Jenis Kendaraan: Sepeda Motor
Sudah 3 tahun, sejak motor ini dibuat
Kesimpulannya:
method tahunBuat pada class Kendaraan, yang seharusnya akan dituliskan sebagai tahun pembuatannya, ditimpa dengan method tahunBuat pada class SepedaMotor menjadi selisih tahun sekarang (tahun 2009) di kurangi tahun buatnya