Overloading
Syarat Overloading :
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;
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;
}
}
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;
//}
}
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;
}
}
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.
Tidak ada komentar:
Posting Komentar