Dalam sebuah kelas diperbolehkan ada lebih dari satu method dengan nama yang sama dengan catatan methods dapat dibedakan berdasarkan banyaknya parameter atau tipe data parameter formal.
class Lingkaran {
double r;
Lingkaran (double r) {
this.r = r;
}
double Luas() {
return Math.PI*this.r*this.r;
}
double Luas (double r) {
//overloading method Luas() beda signature
this.r = r;
return Math.PI*this.r*this.r;
}
double Luas (int r) {
//overloading method Luas() beda signature
System.out.println("tipe data harus double. r tidak diubah!");
return Math.PI*this.r*this.r;
}
double Luas (double r, double PI) {
//overloading method Luas() beda signature
this.r = r;
return PI*this.r*this.r;
}
}
Overloading tidak bisa dilakukan dengan membedakan nilai kembaliannya.
class Lingkaran {
double r;
Lingkaran (double r) {
this.r = r;
}
double Luas() {
return Math.PI*this.r*this.r;
}
//String Luas() { //bukan overloading method Luas() beda nilai kembalian
// return "Luasnya : " + Math.PI*this.r*this.r;
//}
}
Overloading juga bisa dilakukan pada sub kelasnya.
class Lingkaran {
double r;
Lingkaran(double r) {
this.r = r;
}
double Luas() {
return Math.PI*this.r*this.r;
}
double Luas(double r) {
//overloading method Luas() beda signature
this.r = r;
return Math.PI*this.r*this.r;
}
double Luas(int r) {
//overloading method Luas() beda signature
System.out.println("tipe data harus double. r tidak diubah!");
return Math.PI*this.r*this.r;
}
double Luas(double r, double PI) {
//overloading method Luas() beda signature
this.r = r;
return PI*this.r*this.r;
}
}
class Tabung extends Lingkaran {
double h;
Tabung() {
super(0);
//konstruktor kelas turunan, ada keyword super()
//diisi nilai awal
}
double Luas(double r, double PI, double h) {
//overloading method Luas() beda signature
this.r = r;
return PI*this.r*this.r*this.h;
}
}
Overloading method dapat digunakan ketika kita mempunyai operasi yang sama namun berbeda implementasinya. Yang terpenting dalam melakukan ini, nama method harus sama, tapi mempunyai parameter yang berbeda. Terserah berbeda dari segi tipe datanya atau jumlah parameternya. Tergantung kebutuhan untuk implementasi dan nilai kembaliannya. Jadi yang perlu diingat saat melakukan overloading method :
• Nama method sama
• Parameter berbeda (baik tipe maupun jumlahnya)
• Tipe data nilai kembalian dapat berbeda atau sama
Overloading itu mendeklarasikan lebih dari satu kali dengan syarat-syarat tertentu, baik overloading method ataupun konstruktor.
Sumber : bernazlionk.wordpress.com