Belajar Pemrograman Java Dari Dasar

Belajar Bahasa Pemrograman Java: Method Overloading VS Overriding

Method overloading artinya method dengan nama yang sama, namun memiliki parameter yang berbeda, dan method ini berada dalam sebuah class yang sama atau bisa juga berada dalam class yang lain yang terkait dalam hirarki inheritance.

Method overriding artinya memberikan implementasi yang baru dari suatu method pada subclass, jadi method ini berada pada class yang berbeda yang terkait dalam inheritance.

Pada pembahasan sebelumnya sudah dijelaskan mengenai penggunaan method overloading dan juga method overriding.




overloading vs overriding


Diantara kedua method tersebut terdapat beberapa perbedaan penting yang perlu diketahui, diantaranya adalah:

1.) Dalam method overloading, jumlah dan tipe parameter (termasuk urutannya) atau disebut dengan istilah method signature mengalami perubahan, sedangkan pada method overriding tidak berubah atau tetap.

Contoh:

public class Orang {
 
 void menulis(String s){
  System.out.println("Orang menulis");
 }

}


public class Siswa extends Orang {
 
 //Overriding
 void menulis(String s){
  System.out.println("Siswa menulis");
 }
 
 //Overloading
 void menulis(String s, int x){
  //body method disini
 }

}

2.) Method overloading dapat dilakukan pada class yang sama, namun overriding hanya dapat dilakukan pada subclass dengan signature yang sama dan tipe return yang sama. Sedangkan pada overloading, tipe return ini bisa sama atau berbeda.
Contoh overloading denga tipe return berbeda:

public class Angka {
  
 //tipe return adalah int
 //nama method adalah hitung
 int hitung(int x){
   int y = 20;
   int jumlah = x + y;
   return jumlah;//int
 }
  
 //Overloading
 //tipe return adalah double
 //nama method adalah hitung
 double hitung (int x, double y){
  double jumlah = x * y;
  return jumlah;//double
 }
  
 //Overloading
 //tipe return adalah string
 //nama method adalah hitung
 String hitung(){
  double jumlah3 = hitung(20) + hitung (10, 0.5);
  String jumlahTotal = buatString(jumlah3);
  return jumlahTotal;//string
 }
  
 String buatString(double x){
  return "jumlah total adalah " + x;
 }
  
 public static void main(String[] args) {
  Angka angka = new Angka();
  System.out.println(angka.hitung());
 }
  
}


3) Method private, final atau static tidak bisa di overrride, namun method tersebut bisa overloading. Artinya suatu class dapat memiliki lebih dari satu method private, final atau static dengan nama yang sama, namun sub class tidak dapat meng-override private, final atau static method tersebut dari super class.

4) Method overloading pada Java terikat oleh static binding sedangkan method overriding merupakan subjek dari dynamic binding.

5) Method overloading terjadi pada saat compile time sedangkan overriding terjadi pada waktu runtime.

Demikianlah penjelasan mengenai perbedaan antara overloading dan overriding, semoga bisa bermanfaat.

Share on Facebook
Share on Twitter
Share on Google+

Artikel Menarik Lainnya :