Thursday, 27 July 2017

Java - Polymorphism

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) ;    -----> 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.

No comments:

Post a Comment