September 20, 2026
PBO 4 : Inheritance
Inheritance
By Muhammad Fauza Asfadani
4 min read
Inheritance
Sebuah konsep dalam OOP dimana sebuah kelas (subclass / childclass) dapat mewarisi atribut dari kelas lain (superclass / parent class). Hal ini memungkinkan untuk membuat hierarki kelas yang menggambarkan hubungan "is-a" (adalah).
Konsep Inheritance
Pada konsep inheritance, merekonstruksi obyek dari subclasss objek dari superclass juga ikut dikonstruksi. Jadi setiap instance dari suatu subclass juga instance dari superclass. Dalam inheritance terdapat suatu konsep yaitu polymorphism, dimana sebuah objek bisa memiliki banyak bentuk. Ada 2 bentuk utama dari polymorphism yaitu:
a. compile-time polymorphism (method overloading)
Tetrjadi ketika ada beberapa method dengan nama sama tapi parameter yang diminta berbeda. Contohnya;
class MathUtils {
int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; }
}class MathUtils {
int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; }
}Pemanggilan add(2 , 3) dan add(2.5 , 1.5) akan otomatis memilih versi yang sesuai.
b. runtime polymorphism (method overriding)
Terjadi saat subclass menimpa method dari superclass. Ketika dijalankan versi subclass. Contoh;
class Animal {
void sound() { System.out.println("Animal makes sound"); }
}
class Dog extends Animal {
@Override
void sound() { System.out.println("Dog barks"); }
}
class Cat extends Animal {
@Override
void sound() { System.out.println("Cat meows"); }
}
public class Main {
public static void main(String[] args) {
Animal a1 = new Dog();
Animal a2 = new Cat();
a1.sound(); // Output: Dog barks
a2.sound(); // Output: Cat meows
}
}class Animal {
void sound() { System.out.println("Animal makes sound"); }
}
class Dog extends Animal {
@Override
void sound() { System.out.println("Dog barks"); }
}
class Cat extends Animal {
@Override
void sound() { System.out.println("Cat meows"); }
}
public class Main {
public static void main(String[] args) {
Animal a1 = new Dog();
Animal a2 = new Cat();
a1.sound(); // Output: Dog barks
a2.sound(); // Output: Cat meows
}
}Meskipun variabel nya bertipe animal, hasilnya akan sesuai objek yang ditunjuk.
Deklarasi Inheritance
Deklarasi inheritance dilakukan saat kelas dideklarasikan dengan kata kunci extends dan diikuti parent class nya. Bentuk umumnya seperti berikut;
public class child extends parent {
// body code
}public class child extends parent {
// body code
}Keuntungan menggunakan inheritance
Keuntungan utamanya adalah reusability. Sekali method/properti/field didefinisikan pada superclass, maka method/properti/field tersebut otomatis diwariskan ke subclassnya. Subclass hanya perlu mengimplementasikan jika ada perbedaan dengan superclass nya.
Kapan dipakai?
Dapat digunakan saat membutuhkan perluasan dari sebuah kelas contohnya kelas induk berupa karakter yang berisi atribut seperti HP, role, dan ras. Membutuhkan pespesifik terhadap karakternya seperti atribut tipe serangan, dan damage serangannya.
public class Hero {
public String Ras;
public int HP;
public String Nama;
}
public class Marksman extends Hero {
public String Serangan;
public String Senjata;
}public class Hero {
public String Ras;
public int HP;
public String Nama;
}
public class Marksman extends Hero {
public String Serangan;
public String Senjata;
}Praktikum
Membuat package dan project baru.
Membuat class dan subclass.
- Membuat kelas kendaraan
- Membuat subclass mobil yang mewarisi kendaraan.
- Membuat subclass motor yang mewarisi kendaraan juga.
- Menerapkan override pada menampilkan info di masing masing subclass.
Membuat class main untuk membuat objek.
- Membuat objek dari tiap tiap subclass.
Hasil dan Analisis
Dapat dilihat dari hasil output runing file nya, membuktikan bahwa konsep polymorphism dapat terjadi pada subclass. Dimana 2 subclass yang berbeda menjadikan method tampilkanInfo() dari kelas parent nya berbagai macam bentuknya. Pada objek jazz yang dibuat dari subclass mobil, method tampilkanInfo() menampilkan output yang ada jumlah pintunya khusus untuk objek dari subclass mobil. Sedangkan pada objek vario method tampilkanInfo() nya menampilkan output yang ditambah CC yang dikhususkan untuk objek dari subclass motor. Begitulah konsep polymorphism pada inheritance bekerja.
Polymorphism pada kasus ini berupa polymorphism runtime (method override). Dengan mendeklarasikan method dari class parent yang di atasnya diberikan mention override,
@Override
method kelas parent() {
super.method kelas parent()
// code yang dikhususkan di subclass terkait
}@Override
method kelas parent() {
super.method kelas parent()
// code yang dikhususkan di subclass terkait
}dapat menghasilkan berbagai bentuk objek dari method nya.
Tugas Modul 5
Kelas Hewan (parrent)
public class Hewan {
String Nama;
String Jenis;
public void tampilkanInfo() {
System.out.println("Nama hewan: " + Nama);
System.out.println("Jenis hewan: " + Jenis);
}
}public class Hewan {
String Nama;
String Jenis;
public void tampilkanInfo() {
System.out.println("Nama hewan: " + Nama);
System.out.println("Jenis hewan: " + Jenis);
}
}Kelas Menengah
// Kelas Anjing
public class Anjing extends Hewan {
protected String jenisAnj;
protected String suara;
@Override
public void tampilkanInfo() {
System.out.println("Nama hewan: " + Nama);
System.out.println("Jenis anjing: " + jenisAnj);
System.out.println("Hewan bersuara: " + suara);
}
}
// Kelas Kucing
public class Kucing extends Hewan {
protected String jenisCat;
public int umur;
@Override
public void tampilkanInfo() {
System.out.println("Nama hewan: " + Nama);
System.out.println("Jenis kucing: " + jenisCat);
System.out.println("Umur Kucing: " + umur);
}
}// Kelas Anjing
public class Anjing extends Hewan {
protected String jenisAnj;
protected String suara;
@Override
public void tampilkanInfo() {
System.out.println("Nama hewan: " + Nama);
System.out.println("Jenis anjing: " + jenisAnj);
System.out.println("Hewan bersuara: " + suara);
}
}
// Kelas Kucing
public class Kucing extends Hewan {
protected String jenisCat;
public int umur;
@Override
public void tampilkanInfo() {
System.out.println("Nama hewan: " + Nama);
System.out.println("Jenis kucing: " + jenisCat);
System.out.println("Umur Kucing: " + umur);
}
}Kelas Turunan
public class Kitten extends Kucing {
String namaKitten;
@Override
public void tampilkanInfo() {
System.out.println("Nama kitten: " + namaKitten);
System.out.println("Jenis kucing: "+ jenisCat);
}
}public class Kitten extends Kucing {
String namaKitten;
@Override
public void tampilkanInfo() {
System.out.println("Nama kitten: " + namaKitten);
System.out.println("Jenis kucing: "+ jenisCat);
}
}Kelas Main
public class Main {
public static void main(String[] args) {
System.out.println("=== Objek Hewan ===");
Hewan hewanUmum = new Hewan();
hewanUmum.Nama = "Burung Hantu";
hewanUmum.Jenis = "Aves";
hewanUmum.tampilkanInfo();
System.out.println("\n=== Objek Anjing ===");
Anjing anjingSaya = new Anjing();
anjingSaya.Nama = "Heli"; // Mewarisi dari Hewan
anjingSaya.jenisAnj = "Golden Retriever";
anjingSaya.suara = "Guk guk!";
anjingSaya.tampilkanInfo();
System.out.println("\n=== Objek Kucing ===");
Kucing kucingSaya = new Kucing();
kucingSaya.Nama = "Milo"; // Mewarisi dari Hewan
kucingSaya.jenisCat = "Persia";
kucingSaya.umur = 24;
kucingSaya.tampilkanInfo();
System.out.println("\n=== Objek Kitten ===");
Kitten anakKucing = new Kitten();
anakKucing.namaKitten = "Leo";
anakKucing.jenisCat = "Anggora"; // Mewarisi dari Kucing
anakKucing.tampilkanInfo();
}
}public class Main {
public static void main(String[] args) {
System.out.println("=== Objek Hewan ===");
Hewan hewanUmum = new Hewan();
hewanUmum.Nama = "Burung Hantu";
hewanUmum.Jenis = "Aves";
hewanUmum.tampilkanInfo();
System.out.println("\n=== Objek Anjing ===");
Anjing anjingSaya = new Anjing();
anjingSaya.Nama = "Heli"; // Mewarisi dari Hewan
anjingSaya.jenisAnj = "Golden Retriever";
anjingSaya.suara = "Guk guk!";
anjingSaya.tampilkanInfo();
System.out.println("\n=== Objek Kucing ===");
Kucing kucingSaya = new Kucing();
kucingSaya.Nama = "Milo"; // Mewarisi dari Hewan
kucingSaya.jenisCat = "Persia";
kucingSaya.umur = 24;
kucingSaya.tampilkanInfo();
System.out.println("\n=== Objek Kitten ===");
Kitten anakKucing = new Kitten();
anakKucing.namaKitten = "Leo";
anakKucing.jenisCat = "Anggora"; // Mewarisi dari Kucing
anakKucing.tampilkanInfo();
}
}Dari semua kelas diatas yang sudah dibuat, dibuat semua objeknya melalui kelas main. Hal ini juga unutk melihat proses overrding dari kelas pewarisnya ke kelas induknya.
Dilihat pada gambar 8, objek buatan dari kelas kelasnya berhasil terbuat. Dan juga metode tampilkanInfo() darfi kelas anakan berhasil menimpa informasi yag dibuat dari kelas indukan.
Kesimpulan
Demikian praktikum kali ini, pewarisan kelas menjadikan membuat kelas yang berhierarki. Dimana suatu kelas memiliki pewaris kelasnya, dan pewarisnya juga memiliki pewarisnya juga. Hal tersebut dapat diimplementasikan dengan metode bawaan java yaitu extend, yang berfungsi untuk mewarisi kelas yang sudah ada. Selain itu, dari pewarisan kelas juga membuat peristiwa polymorphism terjadi salah satunya dengan override method yang sudah ada di kelas induk. Sehingga method yang sama dapat menghasilkan keluaran yang berbeda.
Sekian praktikum dari saya, bila ada salah kata mohon maaf dan terimakash.
Referensi dan Lampiran
Sebagai bagian dari transparansi dan dokumentasi teknis, seluruh kode sumber yang digunakan dalam praktikum ini telah diunggah ke repositori GitHub. Hal ini juga bertujuan untuk memudahkan pengelolaan versi (version control) di masa mendatang.
- Repositori GitHub: https://github.com/asfadani/asfadani_kuliah.git
- Modul : Modul 5 : Inheritance โ I mam Adi Nata, M.Kom. โ Universitas Tidar.
Disusun Oleh
Muhammad Fauza Asfadani / 2505060011