Polimorfisme dalam OOP adalah sebuah prinsip di mana class dapat memiliki
banyak “bentuk” method yang berbeda-beda meskipun namanya sama.
“Bentuk” di sini dapat kita artikan: isinya berbeda, parameternya berbeda, dan tipe
datanya berbeda.
Karena kamu baru mendengar kedua hal ini, mari kita bahas perbedaanya lebih
detail:
Itulah method Overloading.
Contohnya giaman?
Contohnya misalkan kita memiliki class Lingkaran.java. Pada class ini terdapat
method luas().
Misalnya kita ingin menghitung luas berdasarkan jari-jari (radius) atau diameter.
class Lingkaran {
}
Coba perhatikan!
Class anak akan memiliki nama method yang sama dengan class induk dan anak
yang lainnya.
Interface adalah class kosong yang berisi nama-nama method yang nanti harus
diimplementasikan pada class lain. Dalam pengimplementasiannya bisa saja tiap-
tiap class akan mengimplementasikan secara berbeda dengan nama method yang
sama.
Nah! kelihatan kan bedanya?
Sedangkan polimorfisme dinamis terjadi pada saat ada hubungan dengan class lain
seperti inheritance.
Berikan nama ContohPolimorfisme:
Setelah itu, buat package baru dengan nama bangundatar.
package bangundatar;
float keliling(){
System.out.println("Menghitung keliling bangun datar");
return 0;
}
}
Berikutnya buat class lagi dengan nama Persegi dan isi kodenya seperti ini:
package bangundatar;
@Override
public float luas() {
return this.sisi * this.sisi;
}
@Override
public float keliling(){
return this.sisi * 4;
}
}
Berikutnya buat class Segitiga dengan isi sebagai berikut:
package bangundatar;
@Override
public float luas(){
return this.alas * this.tinggi;
}
}
Berikutnya buat class Lingkaran dengan isi sebagai berikut:
package bangundatar;
public Lingkaran(int r) {
this.r = r;
}
@Override
public float luas(){
return (float) (Math.PI * r * r);
}
@Override
public float keliling(){
return (float) (2 * Math.PI * r);
}
}
Terakhir, buat class Main dengan isi sebagai berikut:
package bangundatar;
Class yang bisa dijalankan hanyalah class Main, karena ia memiliki method main.
Untuk menjalankannya, silahkan klik kanan pada class main.. lalu pilih Run File.
Maka hasilnya:
package notifikasi;
package notifikasi;
@Override
public void sendMessage(String receiver, String content) {
System.out.println("Mengirim email ke " + receiver + " dengan
isi:");
System.out.println(content);
}
}
Berikutnya, di dalam package yang sama.. buatlah class baru dengan
nama SMSNotification dan isi seperti ini:
package notifikasi;
@Override
public void sendMessage(String receiver, String content) {
System.out.println("Mengirim SMS ke " + receiver + " dengan
isi:");
System.out.println(content);
}
}
Berikutnya, di dalam package yang sama.. buatlah class baru dengan
nama PushNotification dan isi seperti ini:
package notifikasi;
@Override
public void sendMessage(String receiver, String content) {
System.out.println("Mengirim Push Notif ke " + receiver + " dengan
isi:");
System.out.println(content);
}
}
Terakhir, buatlah class Main di dalam package notifikasi dan isi kodenya
seperti ini:
package notifikasi;
emailNotif.sendMessage(emailPenerima, message);
smsNotif.sendMessage(nomerHp, message);
pushNotif.sendMessage(mobileId, message);
}
}
Hasilnya: