Polymorphism  ni nini?

Polymorphism ni uwezo wa object kubadilika katika hali mbalimbali. Polymorphism huhusika katika ku update properties, function na class, kutoka kwenye class iliyokuwepo. Kwa ufupi polymorphism ni uwezo wa object kuwa katika hali mbalimbali.

 

Unapo override method ina maana umeamuwa kuibadilisha kwa method nyingine, hivyo zote zitakuwa na jina moja inaitwa signature. Ila hii haimaanihi kuwa hatuwezi tena ku access method ya mwanzo.

 

Hapa nakwenda kukuletea mfano ambapo nime override method ya parent class na nikaitumia pia. 

 

class gari{

 void tangazo(){

   print("Tunauza magari");

 }

}

 

class toyota extends gari{

 @override

 void tangazo(){

   print("Tunauza toyota");

 }

}

 

class bugati extends gari{

 @override

 void tangazo(){

   print("Tunauza bugati");

 }

}

 

void main(){

 gari magari=gari();

 toyota toyo=toyota();

 bugati bug = bugati();

 

 magari.tangazo();

 toyo.tangazo();

 bug.tangazo();

 

}

 

 

Utaona hapo kama utabadili signature yaani jina la hiyo method basi itashindwa ku override hivyo itatupa matokeo ya mwanzo kabla ya ku override. Angalia mfano huu

class gari{

 void tangazo(){

   print("Tunauza magari");

 }

}

 

class toyota extends gari{

 @override

 void ujumbe(){

   print("Tunauza toyota");

 }

}

 

class bugati extends gari{

 void taarifa(){

   print("Tunauza bugati");

 }

}

 

void main(){

 gari magari=gari();

 toyota toyo=toyota();

 bugati bug = bugati();

 

 magari.tangazo();

 toyo.tangazo();

 bug.tangazo();

 

}

 

 

Utaona hapo kwa kuwa method yetu kwenye parent class ni tangazo() ila kwenye child class tume override kwa method ambazo sio sawa yaani signator tofauti (taarifa() na ujumbe()b ) hivyo imeshindwa ku override badala yake inatuletea matokeo ya awali.

 

Pia unaweza ku override property kutoka kwenye supper class. Sharti ni lile lile lazina signator iwe moja.

class Animal {

 String name;

 

 Animal(this.name);

 

 String get sound => 'Some generic sound';

}

 

class Dog extends Animal {

 Dog(String name) : super(name);

 

 @override

 String get sound => 'Woof, woof!';

}

 

void main() {

 var dog = Dog('Buddy');

 print('${dog.name} says: ${dog.sound}');

}

 

 

Faida za ku override:

  1. Kunarahisisha katika usomaji wa code.
  2. Husaidia katika kupunguza error

 

Mwisho:

Katika somo linalofuata tutakwenda kujifunza kuhusu static  keyword na inavyotumika kwenye property za class.