Contoh Program Inheritance Java: Menjelajahi Konsep Pemrograman Warisan
Jika anda baru mengenal pemrograman berorientasi objek (OOP), mungkin masih memerlukan waktu untuk memahami konsep dasar seperti inheritance atau warisan.
Namun, jika anda sudah menguasai OOP, konsep ini akan menjadi sangat penting untuk mengembangkan program yang lebih kompleks dan mudah dimodifikasi.
Pada artikel ini, kita akan membahas contoh program inheritance Java, yang dapat membantu anda memahami cara kerja warisan dalam praktiknya. Dengan mempelajari contoh ini, anda akan mendapatkan gambaran yang lebih baik tentang bagaimana konsep warisan dapat membantu anda menghemat waktu dan upaya dalam mengembangkan aplikasi.
Sebelum kita membahas contoh program inheritance Java, mari kita perjelas terlebih dahulu apa itu inheritance. Inheritance adalah konsep OOP yang memungkinkan anda membuat kelas baru yang diwarisi sifat dan metode dari kelas yang sudah ada. Dalam hal ini, kelas yang diwarisi disebut superclass atau kelas induk, sedangkan kelas yang mewarisi disebut subclass atau kelas anak.
Konsep warisan dapat membantu anda menghemat waktu dan upaya dalam pengembangan aplikasi, karena anda dapat memanfaatkan sifat dan metode yang sudah ada di kelas induk tanpa perlu menulis ulang kode yang sama. Selain itu, warisan juga dapat membantu anda mengatur kelas anda dalam hierarki, di mana kelas anak mewarisi sifat dan metode dari kelas induk yang lebih umum atau abstrak.
Mari kita lihat contoh program inheritance Java yang sederhana untuk mengilustrasikan konsep ini.
Contoh Program Inheritance Java
Misalkan kita ingin membuat program untuk menghitung luas dan keliling bangun datar seperti lingkaran, segitiga, dan persegi panjang. Dalam hal ini, kita dapat membuat kelas-kelas baru untuk setiap jenis bangun datar, tetapi kita juga dapat memanfaatkan konsep inheritance untuk menghindari penulisan kode yang berulang-ulang.
Membuat Kelas Induk (Parent Class)
Pertama, mari kita buat kelas induk untuk bangun datar, yang akan berisi sifat-sifat dan metode yang umum untuk semua jenis bangun datar.
public class BangunDatar {
protected String jenis;
public String getJenis() {
return jenis;
}
public void setJenis(String jenis) {
this.jenis = jenis;
}
public double hitungLuas() {
return 0;
}
public double hitungKeliling() {
return 0;
}
}
Dalam kelas ini, kita membuat sifat jenis untuk menentukan jenis bangun datar (lingkaran, segitiga, atau persegi panjang) dan metode hitungLuas()
dan hitungKeliling()
yang belum diimplement
Membuat Kelas Anak (Child Class)
Sekarang, mari kita buat kelas anak untuk setiap jenis bangun datar. Kita akan mewarisi sifat dan metode dari kelas induk dan menambahkan sifat dan metode khusus untuk setiap jenis bangun datar.
public class Lingkaran extends BangunDatar {
private double r;
public Lingkaran(double r) {
this.r = r;
this.jenis = "Lingkaran";
}
public double hitungLuas() {
return Math.PI * r * r;
}
public double hitungKeliling() {
return 2 * Math.PI * r;
}
}
public class Segitiga extends BangunDatar {
private double alas;
private double tinggi;
public Segitiga(double alas, double tinggi) {
this.alas = alas;
this.tinggi = tinggi;
this.jenis = "Segitiga";
}
public double hitungLuas() {
return 0.5 * alas * tinggi;
}
public double hitungKeliling() {
double sisiMiring = Math.sqrt(alas * alas + tinggi * tinggi);
return alas + tinggi + sisiMiring;
}
}
public class PersegiPanjang extends BangunDatar {
private double panjang;
private double lebar;
public PersegiPanjang(double panjang, double lebar) {
this.panjang = panjang;
this.lebar = lebar;
this.jenis = "Persegi Panjang";
}
public double hitungLuas() {
return panjang * lebar;
}
public double hitungKeliling() {
return 2 * (panjang + lebar);
}
}
Ketiga kelas ini mewarisi sifat jenis dan metode hitungLuas() dan hitungKeliling() dari kelas induk BangunDatar. Namun, masing-masing kelas anak memiliki sifat dan metode khusus yang tidak ada di kelas induk. Misalnya, kelas Lingkaran memiliki sifat r untuk menyimpan jari-jari lingkaran, sedangkan kelas Segitiga memiliki sifat alas dan tinggi untuk menyimpan alas dan tinggi segitiga.
Menggunakan Kelas Anak (Child Classs)
Setelah kita membuat kelas-kelas untuk setiap jenis bangun datar, kita dapat menggunakannya dalam program kita. Misalnya, kita dapat membuat objek Lingkaran dan menghitung luas dan kelilingnya seperti ini:
Lingkaran lingkaran = new Lingkaran(5);
System.out.println("Jenis: " + lingkaran.getJenis());
System.out.println("Luas: " + lingkaran.hitungLuas());
System.out.println("Keliling: " + lingkaran.hitungKeliling());
Output dari program ini akan menjadi:
Jenis: Lingkaran
Luas: 78.53981633974483
Keliling: 31.41592653589793
Kita juga dapat membuat objek Segitiga dan PersegiPanjang dan menghitung luas dan kelilingnya dengan cara yang sama.
Keuntungan Menggunakan Inheritance
Dengan memanfaatkan konsep inheritance, kita dapat menghindari penulisan kode yang berulang dan menghemat waktu dalam membuat program. Dalam contoh program inheritance java di atas, kita hanya perlu menuliskan kelas induk BangunDatar sekali dan kemudian mewarisi sifat dan metodenya ke setiap kelas anak. Jika kita ingin menambahkan jenis bangun datar lain, kita hanya perlu membuat kelas baru dengan mewarisi sifat dan metode dari kelas induk dan menambahkan sifat dan metode khusus untuk jenis bangun datar baru tersebut.
Selain itu, konsep inheritance juga memudahkan dalam pemeliharaan kode. Jika kita ingin mengubah suatu metode atau sifat dalam kelas induk, perubahan tersebut akan otomatis terdampar ke setiap kelas anak yang mewarisi kelas induk. Ini menghindari kesalahan dalam perubahan kode yang berulang dan mempercepat proses pemeliharaan.
Kesimpulan
Contoh program inheritance java di atas adalah salah satu contoh penerapan konsep inheritance dalam pemrograman Java. Konsep inheritance memungkinkan kita untuk mewarisi sifat dan metode dari kelas induk ke kelas anak, sehingga kita dapat menghindari penulisan kode yang berulang dan menghemat waktu dalam membuat program. Selain itu, konsep inheritance juga memudahkan dalam pemeliharaan kode. Dengan memahami konsep inheritance, kita dapat mengembangkan program Java yang lebih efisien dan mudah dipelihara.