Tutorial OOP Java Part 6: Cara Membuat Pewarisan Class (Inheritance)

Dalam tutorial OOP Java kali ini kita akan membahas salah satu konsep terpenting dalam pemrograman object, yakni tentang inheritance atau pewarisan class.


Pengertian Inheritance (Pewarisan Class)

Inheritance adalah konsep OOP dimana sebuah class dapat menurunkan property dan method yang dimilikinya kepada class lain. Konsep inheritance dipakai untuk memanfaatkan fitur code reuse, yakni menghindari terjadinya duplikasi kode program.

Dalam bahasa Indonesia, inheritance ini disebut juga sebagai pewarisan atau penurunan.

Konsep inheritance membuat sebuah struktur atau hierarki class dalam kode program. Class yang akan diturunkan bisa disebut sebagai class induk (parent class), super class, atau base class.

Sedangkan class yang menerima penurunan bisa disebut sebagai class anak (child class), sub class, derived class atau heir class.

Dalam tutorial ini saya akan menggunakan istilah parent class dan child class, tapi seperti yang tertulis diatas, banyak istilah yang bisa dipakai.


Cara Menurunkan Class di Java

Untuk menurunkan sebuah class di bahasa pemrograman Java, tulis nama child class, lalu perintah extends dan baru tulis nama parent class. Berikut contoh kode program yang di maksud:

class Komputer {
  // kode untuk class Komputer
};

class Laptop extends Komputer {
  // kode untuk class Laptop
};

class BelajarJava {
  public static void main(String args[]){
    Komputer komputerAndi = new Komputer();
    Laptop laptopAndi = new Laptop();
  }
}

Dalam kode ini saya membuat dua buah class: Komputer dan Laptop. Perhatikan perintah di baris 5, itulah cara menurunkan class Komputer kepada class Laptop. Yakni dengan cara menulis perintah extends, diikuti nama parent class yang ingin diturunkan.

Setelah perintah tersebut, class Laptop adalah anak (child) dari class Komputer. Class Laptop nantinya bisa mengakses semua property dan juga method milik class Komputer.

Dalam konsep OOP, hubungan antara parent class dan child class seharusnya memiliki makna tertentu. Biasanya hubungan yang terjadi adalah "is-a", atau "adalah sebuah".

Maksudnya, jika class Laptop adalah turunan dari class Komputer, maka seharusnya Laptop adalah sebuah Komputer. Dalam hal ini Laptop adalah bentuk yang lebih khusus dari Laptop. Selain laptop, class Komputer bisa saja memiliki child class lain seperti KomputerDesktop.

Contoh pewarisan lain adalah antara class Binatang dengan Kucing. Disini kucing adalah sebuah binatang. Atau class Mobil yang memiliki parent class Kendaraan.


Cara Mengakses Data Parent Class

Contoh sebelumnya masih sangat sederhana, dimana class Komputer dan class Laptop belum memiliki data apapun. Sekarang kita akan isi dengan beberapa property dan method:

class Komputer {
  String processor = "Intel Core i9";
  String cekKomputer() { 
    return "Ini berasal dari class Komputer"; 
  }
};

class Laptop extends Komputer {
  String merk = "Asus"; 
  String cekLaptop() { 
    return "Ini berasal dari class Laptop"; 
  }
};

class BelajarJava {
  public static void main(String args[]){
    Laptop laptopAndi = new Laptop();
    
    System.out.println(laptopAndi.processor);
    System.out.println(laptopAndi.merk);
    System.out.println(laptopAndi.cekKomputer());
    System.out.println(laptopAndi.cekLaptop());
  }
}

Hasil kode program:

Intel Core i9
Lenovo
Ini berasal dari class Komputer
Ini berasal dari class Laptop

Dalam kode diatas, class Komputer memiliki satu property processor dan satu method cekKomputer(). Sedangkan class Laptop memiliki property merk dan method cekLaptop().

Karena class Laptop adalah turunan dari class Komputer, maka kita bisa mengakses semua isi class Komputer dari object class Laptop.

Di dalam class BelajarJava saya membuat object laptopAndi yang di instansiasi dari class Laptop. Object laptopAndi bisa mengakses semua isi class Komputer, yakni laptopAndi.processor dan laptopAndi.cekKomputer(). Seolah-olah data dan function ini di definisikan dari dalam class Laptop.


Mengisi Property Menggunakan Constructor

Untuk materi yang sedikit lebih kompleks, dalam kode program berikut saya mengisi ketiga property milik class Komputer dari constructor class Laptop. Silahkan pelajari sejenak alur kode program yang terjadi:

class Komputer {
  String processor;
  String merk;
  String memory;
};

class Laptop extends Komputer {
  Laptop(String paramProcessor, String paramMerk, String paramMemory) { 
    processor = paramProcessor; 
    merk = paramMerk; 
    memory = paramMemory; 
  }
  
  String lihatSpec() { 
    return "Merk: " + merk + ", processor: "+ processor + 
           ", jumlah memory: " + memory; 
  }
};

class BelajarJava {
  public static void main(String args[]){
    Laptop laptopAndi = new Laptop("Intel Core i7","HP","16 GB");
    Laptop laptopRudi = new Laptop("Intel Core i3","Asus","4 GB");

    System.out.println(laptopAndi.lihatSpec());
    System.out.println(laptopRudi.lihatSpec());
  }
}

Hasil kode program:

Tutorial OOP Java Cara Membuat Pewarisan Class (Inheritance)

Pendefinisian property processor, merk dan memory tetap dilakukan dari class Komputer. Hanya saja sekarang proses pengisian ketiga data dilakukan oleh constructor class Laptop seperti di baris 8-12.

Constructor class Laptop butuh 3 buah parameter, yakni paramProcessor, paramMerk dan paramMemory. Ketiga parameter ini harus diisi pada saat proses instansiasi class Laptop seperti di baris 22 dan 23.

Hasilnya, pada saat method lihatSpec() diakses dari object laptopAndi dan laptopRudi, akan tampil nilai yang berbeda-beda.

Ketika mempelajari kode yang agak panjang dan melibatkan banyak object seperti diatas, mulailah membaca kode program dari main() terlebih dahulu.

Jika terdapat proses instansiasi object dengan argument, baru masuk ke dalam pendefinisian class tersebut dan ikuti alur pengiriman argumen hingga mengisi property dari sebuah class. Apabila kita mulai membaca dari pendefinisian class terlebih dahulu, biasanya memang lebih rumit.


Inheritance atau proses pewarisan class memang menjadi topik yang cukup rumit tapi sangat penting. Untuk kode program yang kompleks, bisa saja ada sebuah class yang diturunkan kepada class lain, dan kemudian di turunkan lagi kepada class selanjutnya.

Inilah yang akan kita bahas dalam lanjutan tutorial OOP Java di Duniailkom, yakni Cara Membuat Multilevel Inheritance.

Add Comment