Kelas turunan (subclass) akan mewarisi (inherit) data field (properti atau atribut) dan metoda terakses (accessible method) yang dimiliki oleh superclass. Konsep turunan akan menjadikan superclass mempunyai sifat yang lebih umum (general), sedangkan kelas turunannya akan mempunyai sifat yang lebih spesifik.
Kelas turunan dapat didefinisikan lebih cepat dengan memanfaatkan kelas yang ada. Bila definisi kelas turunan berasal dari superclass yang berada di paket berbeda, Anda perlu mengimpor kelas tersebut terlebih dahulu dengan menggunakan kata kunci import
. Bila superclass berada di paket yang sama dengan subclass yang didefinisikan, Anda tidak perlu 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 akan diwariskan kepada kelas turunannya. Untuk lebih memahami konsep inheritance dengan baik, Anda dapat memahami melalui tiga contoh program Java di artikel ini.
Program pertama adalah kelas PersegiPanjang sebagai superclass. Persegi panjang adalah bangun datar yang memiliki panjang dan lebar sebagai data field. Dari data field panjang dan lebar ini dapat dihitung keliling dan luas dari persegi panjang.
Kode sumber Java (file berekstensi .java) dan hasil kompilasi (file berekstensi .class) dari kelas PersegiPanjang disimpan di direktori c:\filejava\javaapp\kelas\bangun\datar. Program kedua adalah kelas Balok sebagai subclass dari superclass PersegiPanjang.
Balok adalah bangun ruang yang mempunyai panjang, lebar dan juga tinggi sebagai data field. Dari data field panjang, lebar dan tinggi ini, dapat dihitung volume balok. Untuk mempermudah dan mempersingkat pendefinisian kelas Balok, Anda dapat memanfaatkan kelas PersegiPanjang sebagai superclass dari kelas Balok.
Kode sumber dan hasil kompilasi dari kelas Balok kemudian diletakkan di direktori atau paket c:\filejava\javaapp\kelas\bangun\ruang. Program ketiga adalah Kelas DemoBalok yang berisi metoda main untuk menguji kelas Balok. Berikut ini adalah kode program Java dari ketiga kelas tersebut:
1. Kode program kelas PersegiPanjang.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 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; } } |
2. Kode program kelas Balok.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | // 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; } } |
3. Kode program kelas DemoBalok.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | // 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); } } |
