1. Mga balyena at baka
Narito ang isang kawili-wiling zoological na katotohanan: ang isang baka ay mas malapit sa isang balyena kaysa, halimbawa, sa isang hippopotamus. Lumalabas na ang mga baka at balyena ay medyo malapit na kamag-anak.

Tumingin dito. Sabihin natin sa iyo ang tungkol sa polymorphism — isa pang napakalakas na tool ng OOP . Mayroon itong apat na tampok.
2. Ang mana ay hindi panlunas sa lahat
Isipin na nagsulat ka ng isang Cow
klase para sa isang laro. Marami itong larangan at pamamaraan. Ang mga bagay ng klase na ito ay maaaring gumawa ng iba't ibang bagay: maglakad, kumain, at matulog. Ang mga baka ay nagsusuot din ng kampana na tumutunog kapag sila ay naglalakad. Ipagpalagay na naipatupad mo ang lahat sa klase hanggang sa pinakamaliit na detalye.
At pagkatapos ay dumating ang iyong kliyente at sinabing gusto niyang maglabas ng bagong antas ng laro, kung saan ang lahat ng aksyon ay nagaganap sa dagat, at ang pangunahing karakter ay isang balyena.
Nagsisimula kang magdisenyo ng isang Whale
klase at napagtanto mo na ito ay bahagyang naiiba sa Cow
klase. Ang lohika ng parehong mga klase ay halos magkapareho at nagpasya kang gumamit ng mana.

Ang Cow
klase ay perpekto para sa tungkulin ng parent class: mayroon itong lahat ng kinakailangang variable at pamamaraan. Ang kailangan lang nating gawin ay bigyan ang balyena ng kakayahang lumangoy. Ngunit may problema: ang iyong balyena ay may mga binti, sungay, at kampana. Pagkatapos ng lahat, ang pagpapaandar na ito ay ipinatupad sa loob ng Cow
klase. Ano ang maaaring gawin dito?

3. Pamamaraan override
Ang pag-override ng pamamaraan ay darating upang iligtas tayo. Kung nagmana tayo ng isang pamamaraan na hindi masyadong nagagawa ang gusto natin sa ating bagong klase, maaari nating palitan ang pamamaraang iyon ng isa pa.

Paano ito ginagawa? Sa aming descendant class, idinedeklara namin ang parehong paraan tulad ng method ng parent class na gusto naming i-override. Isinulat namin ang aming bagong code dito. At iyon lang — parang ang lumang pamamaraan sa parent class ay wala lang.
Ito ay kung paano ito gumagana:
Code | Paglalarawan |
---|---|
|
|
|
Ipinapakita ng code na ito ang sumusunod na teksto sa screen:
|
|
Ipinapakita ng code na ito ang sumusunod sa screen:
|
Matapos mamana ang Cow
klase at i-override ang printName
pamamaraan, ang Whale
klase ay talagang naglalaman ng sumusunod na data at pamamaraan:
|
Hindi namin alam ang tungkol sa anumang lumang pamamaraan. |
GO TO FULL VERSION