Polymorphism
- Poly - banyak
- Morphism - bentuk
- Jadi, polymorphism ialah kewujudan entiti dalam banyak bentuk.
- Dalam Program Berorientasikan Objek (OOP), polymorphism refer kepada kemampuan/kebolehan objek untuk buat kerja berdasarkan input yang diberikan oleh user.
- Teknik polymorphism ada 2 iaitu : i - Method Overloading ii - Constructor Overloading
i. Method Overload
Serba Sedikit
- Terdapat 2 atau banyak method yang mempunyai nama sama tapi parameter berbeza . (apabila parameter berbeza jadi method-method yang mempunyai nama sama itu boleh buat kerja yang berbeza)
- Berbeza dari segi
- Bilangan parameter
- Datatype parameter
Contoh Code dan Output
i. Berbeza dari segi bilangan parameter
class raya
{
public static void main (String args [])
{
overload obj1 = new overload () ;
obj1.overloading ("Hari Raya Aidilfitri") ;
obj1.overloading ("Ketupat/rendang" , 10.00) ;
}
}
class overload
{
public void overloading(String nama) -----> Bilangan parameter adalah berbeza
{
System.out.println ("Nama hari raya yang bakal disambut oleh umat Islam : "+nama) ;
}
public void overloading(String menu , double harga) -----> Bilangan parameter adalah berbeza
{
System.out.println ("Menu : "+menu +" Harga : RM "+harga) ;
}
}
ii. Berbeza dari segi datatype
class adv_mtdover
{
public static void main (String args [])
{
square obj = new square() ;
obj.sqr(2) ;
obj.sqr(2.5) ;
}
}
class square {
void sqr(int no) { -----> Datatype bagi parameter adalah berbeza
System.out.println ("The square of " +no +" is "+(no*no)) ;
}
void sqr(double no) { -----> Datatype bagi parameter adalah berbeza
System.out.println ("The square of "+no +" is "+(no*no)) ;
}
}
ii. Constructor Overload
Serba Sedikit
- Terdapat 2 atau lebih konstruktur yang mempunyai nama sama tapi parameter berbeza dalam satu class .
Contoh Code dan Output
class adv_consol
{
public static void main (String args[])
{
area a1 = new area(1) ; * kalau nak pastikan sama ada ia adalah konstruktur atau bukan, masa nak create object akan ada nilai
area a2 = new area(1 , 1) ; -----> Bilangan parameter adalah berbeza
System.out.println ("the area of the square side 5 unit is " +a1.square(5)) ;
System.out.println ("the area of the rectangle of sides 5 x 4 unit is "+a2.rect(5,4)) ;
}
}
class area {
double l,b ;
area (double l) {
this.l=l ;
}
area (double l, double b) {
this.l = l ;
this.b = b ;
}
double square (double l) {
return l*l ;
}
double rect(double l, double b) {
return l*b ;
}
}
Kebaikan Overload
- Nama yang sama boleh digunakan untuk banyak method dalam satu class.
- Overload konstruktur berguna untuk bagi nilai awal objek yang berlainan datatype.