Overriding

Overriding berbeda dengan overloading. Kalo overloading, kita boleh menuliskan method yang sama namun dengan jumlah parameter yang berbeda dan nilai kembalian harus sama. Nah, kalau overriding konsepnya sama dengan overloading yaitu menulis kembali method. Namun, caranya overriding menulis kembali method sama persis. Sama mulai dari nama method dan isinya dan mengimplementasi kembali di sub classnya. Overriding dipakai saat kita menggunakan method yang sama tapi berbeda implementasinya. Jadi overriding method mempunyai nama method yang sama, jumlah parameter dan tipe parameter serta nilai kembalian (return) method yang di override. Jika method memiliki modifier akses public, method overridenya juga harus public.

Contoh:

class Kendaraan {
..............
public String getJenis() {
System.out.println(“Harga BBM turun”);
}
}
class Motor extends Kendaraan {
..............
public String getJenis() {
System.out.println(“Harga BBM premium 4000 rupiah”);
}
}

NB:

class motor mengextends class kendaraan
class motor melakukan override method di kendaraan namun berbeda implementasi

Kesimpulan:
  • Override method merupakan method yang sama persis dengan method yang sudah ada di super kelasnya, biasanya perbedaannya adalah pada implementasi (program body)
  • Overidding tidak bisa dilakukan dalam kelas itu sendiri
  • Jadi Overidding kerat kaitannya dengan inheritance (pewarisan)

Contoh lain:

class Lingkaran {
double r;

Lingkaran(double r) {
this.r = r;
}
double Luas() {
return Math.PI*this.r*this.r;
}
double Luas(double r) {
this.r = r;
return Math.PI*this.r*this.r;
}
}
class Tabung extends Lingkaran {
double h;

Tabung() {
//konstruktor kelas turunan, ada super() dan diisi nilai awal
super(0);
}
double Luas(double r) {
//overriding (method and parameter sama)
this.r = r;
return Math.PI * this.r * this.r * this.h;
}
}

NB:


  • Class lingkaran melakukan overloading method Luas (beda signature)
  • Class tabung mengextends class lingkaran
  • Class tabung meng-override method Luas hasil dari overload. Jadi kita juga bisa mengoverride method hasil overloading.


Sumber : bernazlionk.wordpress.com