Belajar Overriding dan Kata Kunci Super pada Java
Assalamualaikum Warahmatullahi Wabarakatuh.
Pada tutorial kali ini kita akan membahas mengenai pengertian Overriding dan penggunaan kata kunci super pada java beserta contoh programnya, sebelumnya kalian harus mempelajari Konsep Pewarisan/Inheritance terlebih dahulu, sebelum melanjutkannya pada tutorial berikut ini.
A. Overriding pada Java
Overriding adalah sebuah fungsi atau mathod dari superclass (kelas induk) yang ditulis kembali pada subclassnya (kelas anak), ada beberapa aturan pada fungsi Overriding yang perlu kalian ketahui:
- Parameter pada fungsi atau mothod overriding di subclass/kelas anak harus sama dengan parameter yang terdapat pada superclass/kelas induka.
- Aturan hak akses pada fungsi overriding di subclass tidak boleh lebih ketat di bandingkan dengan hak akses method atau fungsi pada class induk.
Misalnya pada contoh berikut ini kita mempunyai 2 buah class yaitu class hewan (superclass) dan class karnivora (subclass), pada program tersebut class karnivora mewarisi semua sifat pada class hewan, jadi semua atribut yang terdapat pada class hewan bisa di akses oleh class karnivora.
Untuk persiapan, pada class hewan secara default sudah terpasang beberapa atribut yang diperlukan seperti variable dan method. dan pada class karnivora juga, terdapat sebuah instance atau objek dari class tersebut.
//Superclass/Class Induk
class hewan{
//Variable (Default)
String jenis = "Kucing";
int umur = 3;
//Method Get (Default)
String getJenis(){
return jenis;
}
int getUmur(){
return umur;
}
}
//Subclass/Kelas Anak
public class karnivora extends hewan{
public static void main(String[] args){
karnivora data = new karnivora();
}
}
Pada souce code tersebut, class kanivora mewarisi semua sifat yang ada pada class hewan, jika kita membuat variable atau method pada class karnivora dengan nama yang sama seperti pada class hewan, lalu mengubah nilainnya, seperti berikut ini:
Jika kita jalankan hasilnya akan seperti ini:
Hasil yang ditampilkan adalah "Anjing" dan 5, bukan "Kucing" dan 3, itu karena program secara otomatis hanya akan menjalankan fungsi yang terdapat pada classnya sendiri terlebih dahu.
B. Penggunaan Kata Kunci super pada Java
Sebelumya kita sudah mengetahui apa itu Overriding pada java, pada program sebelumnya jika kita menggunakan nama method yang sama dengan yang ada pada superclass kita, saat program dijalankan maka fungsi yang berada pada classnya sendiri lah yang akan dijalankan lebih dulu.
Dengan menggunakan kata kunci super, kita dapat mengakses nilai yang berada pada superclass/kelas induk walaupun nama variable atau methodnya sama, contohnya kita bisa menggunakan kata kunci super pada sebuah variable, seperti berikut ini
public class karnivora extends hewan{
String jenis = "Anjing";
int umur = 5;
public static void main(String[] args){
karnivora data = new karnivora();
System.out.println("Jenis Hewan: "+data.getJenis());
System.out.println("Usia Hewan: "+data.getUmur());
}
@Override
String getJenis(){
return jenis;
}
@Override
int getUmur(){
return umur;
}
}
Jika kita jalankan hasilnya akan seperti ini:
Hasil yang ditampilkan adalah "Anjing" dan 5, bukan "Kucing" dan 3, itu karena program secara otomatis hanya akan menjalankan fungsi yang terdapat pada classnya sendiri terlebih dahu.
B. Penggunaan Kata Kunci super pada Java
Sebelumya kita sudah mengetahui apa itu Overriding pada java, pada program sebelumnya jika kita menggunakan nama method yang sama dengan yang ada pada superclass kita, saat program dijalankan maka fungsi yang berada pada classnya sendiri lah yang akan dijalankan lebih dulu.
Dengan menggunakan kata kunci super, kita dapat mengakses nilai yang berada pada superclass/kelas induk walaupun nama variable atau methodnya sama, contohnya kita bisa menggunakan kata kunci super pada sebuah variable, seperti berikut ini
public class karnivora extends hewan{
String jenis = "Anjing";
int umur = 5;
public static void main(String[] args){
karnivora data = new karnivora();
System.out.println("Jenis Hewan: "+data.getJenis());
System.out.println("Usia Hewan: "+data.getUmur());
}
@Override
String getJenis(){
return super.jenis;
}
@Override
int getUmur(){
return super.umur;
}
}
Demo:
Coba kalian perhatikan, didalam method getJenis dan getUmur, dengan menggunakan super, nilai yang dikembalikan bukan yang berada pada class karnivora tapi yang berada pada class hewan.
Contoh terakhir, disini kita akan mencoba menggunakan kata kunci super pada konstruktor dan method, pada program tersebut masing-masing class kita tambahkan konstruktor dengan parameternya.
Baca Juga: Apa Itu Konstruktor dan Parameter pada Java
//Superclass
class hewan{
String jenis;
int umur;
//Konstruktor dengan Parameter pada Class Hewan
public hewan(String jenis, int umur){
//Variable jenis dan umur Mendapatkan Nilai dari Parameter
this.jenis = jenis;
this.umur = umur;
}
String getJenis(){
return jenis;
}
int getUmur(){
return umur;
}
}
//Subclass/Kelas Anak
public class karnivora extends hewan{
String jenis = "Anjing";
int umur = 5;
public karnivora(String jenis, int umur) {
//Mengalihkan Nilai pada Konstruktor hewan
super("Domba", 7);
}
public static void main(String[] args){
karnivora data = new karnivora("",0); //Beri Nilai Default
System.out.println("==== Mengambil Nilai Dari Class Hewan ========");
data.getData();
System.out.println("==== Mengambil Nilai Dari Class Karnivora ====");
//Menjalankan 2 Buah Method yang Terdapat pada Subclass (Tanpa super)
System.out.println("Jenis Hewan: "+data.getJenis());
System.out.println("Usia Hewan: "+data.getUmur());
}
void getData(){
//Menjalankan 2 Buah Method yang Terdapat pada Superclass (super)
System.out.println("Jenis Hewan: "+super.getJenis());
System.out.println("Usia Hewan: "+super.getUmur());
}
String getJenis(){
return jenis;
}
int getUmur(){
return umur;
}
}
Demo:
Perlu kalian ketahui, keyword super tidak bisa digunakan secara langsung didalam method static seperti pada method main, jadi harus di panggil pada method void atau return terlebih dahulu lalu panggil pada method main/static.
Wassalamualaikum Warahmatullahi Wabarakatuh.