Penerapan polymorphism
Seperti telah dijelaskan di awal label, polymorphism adalah kemampuan sebuah untuk menerjemahkan suatu method menjadi berbagai macam aksi. Sebenarnya ketika kita memahami overriding dan overloading di atas, secara tidak langsung kita telah mempelajari dasar-dasar menyusun teori polymorphism. Polymorphism membolehkan kelas induk (superclass) untuk mendefinisikan method umum untuk semua turunannya. Kelas-kelas turunannya dapat mengimplementasikan method tersebut sesuai dengan karakteristik masin-masing kelas.
Pada contoh 8.30 dan 8.31 kita telah membuat kelas Bangun yang merupakan kelas induk yang mempunyai method hitungLuas(). Method ini bersifat umum. Pada contoh 8.30, method ini kita implementasikan dengan untuk mencari nilai luas segitiga pada kelas Segitiga. Sedangkan pada contoh 8.31, method ini kita implementasikan untuk mencari luas BujurSangkar pada kelas BujurSangkar. Perhatikan contoh berikut ini.
Contoh 8.32. Penerapan polymorphism.
class Bangun {
public double hitungLuas() {
System.out.println("Method umum");
return 0;
}
}
class BujurSangkar extends Bangun {
private double sisi;
BujurSangkar(int s) {
sisi = s;
}
//overriding method hitungLuas()
public double hitungLuas() {
double luas = sisi * sisi;
return luas;
}
}
class Segitiga extends Bangun {
private double alas;
private double tinggi;
Segitiga (int a, int t) {
alas = a;
tinggi = t;
}
// overriding method hitungLuas()
public double hitungLuas() {
double luas = 0.5 * alas * tinggi;
return luas;
}
}
class Lingkaran extends Bangun {
private double jarijari;
private final double PI = 3.1416;
Lingkaran(int r) {
jarijari = r;
}
//overriding method hitungLuas()
public double hitungLuas() {
double luas = PI * jarijari * jarijari;
return luas;
}
}
class DemoPolimorfisme2 {
public static void main(String[] args) {
Bentuk obyek;
BujurSangkar b = new BujurSangkar(12);
Segitiga s = new Segitiga(5, 6);
Lingkaran l = new Lingkaran(4);
// obyek mengacu pada objek BujurSangkar
obyek = b;
// akan memanggil method yang terdapat pada
BujurSangkar
System.out.println("Luas bujursangkar : " +
obyek.hitungLuas());
System.out.println();
// obyek mengacu pada objek Segitiga
obyek = s;
// akan memanggil method yang terdapat pada Segitiga
System.out.println("Luas segitiga : " +
obyek.hitungLuas());
System.out.println();
// obyek mengacu pada objek Lingkaran
obyek = l;
// akan memanggil method yang terdapat pada Lingkaran
System.out.println("Luas lingkaran: " +
obyek.hitungLuas());
System.out.println();
}
}
Pada contoh 8.32 ini kita menggabungkan contoh-contoh sebelumnya untuk menunjukkan bagaimana polymorphism terbentuk. Kelas induk adalah Bangun dan mempunyai subclass yaitu: BujurSangkar, Segitiga, dan Lingkaran. Semua subclass mempunyai method hitungLuas() yang diturunkan dari kelas Bangun. Perhatikan, bahwa meskipun nama method hitungLuas() ada pada semua subclass, ternyata penerapannya berbeda-beda tergantung pada subclass masing-masing.
Halaman Terkait:
| Aplikasi pemrograman berorientasi obyek dengan java | Pembuatan kelas | Penerapan inheritance | Penerapan overriding dan overloading | Menggunakan paket dan interface |
Post a Comment