Banner Java

Memahami Konsep Turunan (Inheritance) Melalui Contoh Program

Di artikel Memahami Konsep Turunan (Inheritance) Di Java, Anda telah diperkenal dengan konsep turunan (inheritance) di bahasa pemrograman Java. Di artikel kali ini, Anda dapat mempelajari konsep turunan melalui contoh program. Turunan memperbolehkan penggunaan kelas yang sudah ada sebagai superclass untuk mendefinisikan kelas turunannya. Kelas turunan (subclass) akan mewarisi (inherit) data field (properti atau atribut) dan metoda terakses (accessible) yang dimiliki oleh superclass. Superclass akan mempunyai sifat lebih umum (general), sedangkan kelas turunannya akan lebih spesifik.

Kelas turunan dapat didefinisikan lebih cepat dengan memanfaatkan kelas yang ada. Apabila definisi kelas turunan berasal dari superclass yang berada di paket berbeda, Anda harus mengimpor kelas tersebut terlebih dahulu dengan menggunakan kata kunci import. Apabila superclass berada di paket yang sama dengan subclass yang sedang didefinisikan, Anda tidak perlu untuk mengimport superclass. Kelas sebaiknya dikelompokkan menurut jenis dan fungsinya dan diletakkan di nama paket yang menggambarkan kelas tersebut.

Kata kunci extends digunakan untuk mendeklarasikan kelas turunan (subclass) dari kelas atasnya (superclass). Dengan kata kunci extends, kelas turunan akan mewarisi data field dan metoda yang dimiliki oleh kelas di atasnya. Sebenarnya tidak semua data field dan metoda akan diwariskan kepada kelas turunnannya. Data field dan metoda yang dideklarasikan dengan modifier private, tidak diwariskan kepada kelas turunannya. Untuk lebih memahami konsep inheritance, Anda dapat memahaminya melalui tiga contoh program di artikel ini.

Program pertama adalah kelas PersegiPanjang sebagai superclass. Persegi panjang adalah bangun datar yang memiliki sisi panjang dan lebar sebagai data field kelas. Dari sisi panjang dan lebar, dapat ditentukan keliling dan luas persegi panjang. Kode sumber (berekstensi .java) dan hasil kompilasi (berekstensi .class) dari kelas PersegiPanjang diletakkan di direktori (paket) c:\filejava\javaapp\kelas\bangun\datar. Program kedua adalah kelas Balok sebagai subclass.

Balok merupakan bangun ruang yang mempunyai sisi panjang, lebar dan tinggi sebagai data field kelas. Dari sisi panjang, lebar dan tinggi, dapat ditentukan pula volume balok. Untuk mempermudah dan mempersingkat pendefinisian kelas Balok, Anda dapat memanfaatkan kelas PersegiPanjang sebagai superclass dari kelas Balok. Kode sumber dan hasil kompilasi kelas Balok diletakkan di direktori (paket) c:\filejava\javaapp\kelas\bangun\ruang. Program ketiga adalah Kelas DemoBalok yang digunakan untuk menguji kelas Balok yang telah didefinisikan sebelumnya. Berikut ini adalah kode program dari ketiga kelas tersebut:

Kode program kelas PersegiPanjang.

class PersegiPanjang {

   // Data field PersegiPanjang
   double panjang = 1.0;
   double lebar = 1.0;

   // Konstruktor pertama
   PersegiPanjang() {
   }

   // Konstruktor kedua
   PersegiPanjang(double x) {
      panjang = x;
   }

   // Kondtruktor kedua
   PersegiPanjang(double x, double y) {
      panjang = x;
      lebar = y;
   }
   
   // Metoda mencari keliling
   double mencariKelilingPP() {
      return 2 * (panjang * lebar);
   }

   // Metoda memcari luas
   double mencariLuasPP() {
      return panjang * lebar;
   }
}

Kode program kelas Balok.

// Nama file : Balok.java
// Mendefinisikan kelas Balok

// Meletakkan kelas Balok
package bagun.ruang;

// Mengimpor kelas PersegiPanjang
import bangun.datar.PersegiPanjang;

// Deklarasi kelas Balok
public class Balok extends PersegiPanjang {

   // Deklarasi variabel tinggi
   private double tinggi = 1.0;

   // Accessor data field tinggi
   public double getTinggi() {
      return tinggi;
   }

   // Mutator data field tinggi
   public void setTinggi(double tinggi) {
      this.tinggi = (tinggi > 1) ? tinggi : 1;
   }

   // Mencari volume balok
   public double mencariVolumeB() {
      return mencariLuasPP() * tinggi;
   }
}

Kode program kelas DemoBalok.

// Nama file : DemoBalok.java
// Menguji kelas Balok

// mengimpor kelas
import java.text.DecimalFormat;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import bangun.ruang.Balok;

// Deklarasi kelas DemoBalok
public class DemoBalok {

   // Metoda main
   public static void main(String[ ] args) {

      // Mendeklarasikan variabel acuan ke obyek
      DecimalFormat decimalFormat;
      JTextArea textArea;
      Balok balok;

      // Membuat obyek Balok
      balok = new Balok();

      decimalFormat = new DecimalFormat("0.00");
      String string = "Menggunakan Kelas Balok\n";

      string += "\nPanjang balok : " + decimalFormat.format(balok.getPanjang());
      string += "\nLebar balok : " + decimalFormat.format(balok.getLebar());
      string += "\nTinggi balok : " + decimalFormat.format(balok.getTinggi());
      string += "\nVolume balok : " + decimalFormat.format(balok.mencariVolumeB());

      // Memodifikasi panjang dan lebar
      string += "\n\nMemodifikasi panjang = 5 dan lebar = 3";
      balok.setPanjang(5);
      balok.setLebar(3);
      string += "\nPanjang balok : " + decimalFormat.format(balok.getPanjang());
      string += "\nLebar balok : " + decimalFormat.format(balok.getLebar());
      string += "\nTinggi balok : " + decimalFormat.format(balok.getTinggi());
      string += "\nVolume balok : " + decimalFormat.format(balok.mencariVolumeB());

      // Membuat obyek JTextArea
      textArea = new JTextArea();

      // Menampilkan hasil
      textArea.setText(string);
      JOptionPane.showMessageDialog(null, textArea, "Kelas Balok",
         JOptionPane.INFORMATION_MESSAGE);

      // Mengakhiri program berpenampilan GUI
      System.exit(0);
   }
}

Baca artikel terkait lainnya:

Untuk memperbaiki mutu konten, Anda dapat berpartisipasi dengan cara melaporkan apabila menemukan kesalahan ketik, kata-kata rangkap, redaksi kurang pas (jelas), gambar pendukung tidak ada dan sebagainya melalui form Kontak Kami untuk mendapatkan perbaikan. Terima kasih atas kerjasamanya.

Hindro HindriantoHindro adalah pendiri sekaligus admin termasmedia.com dan topikit.com, blog online yang mengulas teknologi informasi. Dunia web mulai ditekuni tahun 2012 dengan mempelajari CMS Joomla dan Wordpress. Beberapa buku yang sekarang dipelajari antara lain PHP, HTML5, ASP.NET 4.5, JavaScript, CSS3, MySQL, Adobe Dreamweaver, Adobe Photoshop dan Adobe Flash.