Melanjutkan tutorial OOP Java, kali ini kita akan bahas pengertian dan fungsi perintah super dalam bahasa Java.
Pengertian Perintah super
Dalam bahasa Java, super adalah perintah khusus untuk mengakses parent class. Perintah ini biasanya dipakai untuk mengakses method yang tertimpa (overridden) atau constructor milik parent class. Kata super sendiri berasal dari superclass yang menjadi sebutan lain dari parent class.
Perintah super biasanya baru terpakai jika ada method dengan nama yang sama antara class saat ini dengan parent class (terjadi method overriding). Praktek untuk kasus ini sebenarnya sudah pernah kita bahas dalam tutorial tentang method overriding dalam bahasa Java:
class Komputer { String cekInfo() { return "Ini berasal dari class Komputer"; } } class Laptop extends Komputer { String cekInfo() { System.out.println(super.cekInfo()); return "Ini berasal dari class Laptop"; } } class BelajarJava { public static void main(String args[]){ Laptop laptopAndi = new Laptop(); System.out.println(laptopAndi.cekInfo()); } }
Hasil kode program:
Ini berasal dari class Komputer Ini berasal dari class Laptop
Di dalam class Komputer dan class Laptop, sama-sama terdapat method cekInfo(). Jika kita mengakses method cekInfo() dari dalam class Laptop, itu akan mengakses method milik class Laptop.
Agar kita mengakses method cekInfo() milik class Komputer, harus menggunakan perintah super.cekInfo() seperti di baris 10, sebab method tersebut sudah ter-overridden.
Perintah super untuk Mengakses Constructor Parent Class
Penggunaan lain dari perintah super adalah jika ingin mengakses constructor milik parent class. Sebagai bahan latihan, bisakah anda menebak apa yang salah dari kode program berikut?
class Komputer { Komputer(String merk) { System.out.println("Komputer merk "+merk); } } class Laptop extends Komputer { Laptop(String merk) { System.out.println("Laptop merk "+merk); } } class BelajarJava { public static void main(String args[]){ Laptop laptopAndi = new Laptop("Dell"); } }
Sama seperti sebelumnya, class Laptop merupakan turunan dari class Komputer. Kedua class ini memiliki constructor yang butuh 1 argument merk.
Ketika class Laptop di instansiasi ke dalam object laptopAndi di baris 15, itu akan langsung menjalankan constructor milik class Laptop dan juga class Komputer.
Akan tetapi ketika di-compile, terjadi error berikut:
BelajarJava.java:8: error: constructor Komputer in class Komputer cannot be applied to given types; Laptop(String merk) { ^ required: String found: no arguments reason: actual and formal argument lists differ in length 1 error
Error ini terjadi karena constructor class Komputer harus diisi dengan argument merk. Maka, kita perlu jalankan perintah super(merk) dari dalam class Laptop agar argument merk bisa sampai ke constructor class Komputer.
Berikut solusinya:
class Komputer { Komputer(String merk) { System.out.println("Komputer merk "+merk); } } class Laptop extends Komputer { Laptop(String merk) { super(merk); System.out.println("Laptop merk "+merk); } } class BelajarJava { public static void main(String args[]){ Laptop laptopAndi = new Laptop("Dell"); } }
Tambahan kode program ada di baris 9, perintah super(merk) akan mengirim argument merk ke dalam constructor class Komputer.
Dalam artikel ini kita telah membahas pengertian dan fungsi perintah super dalam bahasa Java. Perintah ini tidak selalu diperlukan, tapi akan terpakai dalam situasi tertentu.
Lanjutan tutorial OOP Java berikutnya akan membahas tentang Pengertian dan Fungsi Perintah this.