CodeGym/Java Blog/Random/Polymorphism sa Java
John Squirrels
Antas
San Francisco

Polymorphism sa Java

Nai-publish sa grupo
Hi! Ngayon ay nagtatapos kami ng isang serye ng mga aralin sa mga prinsipyo ng OOP. Sa araling ito, pag-uusapan natin ang Java polymorphism. Ang polymorphism ay ang kakayahang magtrabaho kasama ang ilang uri na parang pareho silang uri. Bukod dito, ang pag-uugali ng mga bagay ay mag-iiba depende sa kanilang uri. Tingnan natin ang pahayag na ito. Magsimula tayo sa unang bahagi: 'ang kakayahang magtrabaho kasama ang ilang uri na parang pareho silang uri'. Paano magiging pareho ang iba't ibang uri? Medyo kakaiba :/ Paano gamitin ang polymorphism - 1Sa katunayan, napakasimple ng lahat. Halimbawa, ang sitwasyong ito ay lumitaw sa panahon ng ordinaryong paggamit ng mana. Tingnan natin kung paano ito gumagana. Ipagpalagay na mayroon kaming isang simpleng klase ng magulang ng Cat na may isang solong run() na pamamaraan:
public class Cat {

   public void run() {
       System.out.println("Run!");
   }
}
Ngayon ay gagawa tayo ng tatlong klase na nagmamana ng Cat : Lion , Tiger at Cheetah .
public class Lion extends Cat {

   @Override
   public void run() {
       System.out.println("Lion runs at 80 km/h");
   }
}

public class Tiger extends Cat {

   @Override
   public void run() {
       System.out.println("Tiger runs at 60 km/h");
   }
}

public class Cheetah extends Cat {

   @Override
   public void run() {
       System.out.println("Cheetah runs at up to 120 km/h");
   }
}
Kaya may 3 klase kami. Imodelo natin ang sitwasyon kung saan makakatrabaho natin sila na parang magkaklase sila. Isipin na ang isa sa aming mga pusa ay may sakit at nangangailangan ng tulong mula kay Dr. Dolittle. Subukan nating lumikha ng Dolittle class na maaaring magpagaling ng mga leon, tigre, at cheetah.
public class Dolittle {

   public void healLion(Lion lion) {

       System.out.println("Lion is healthy!");
   }

   public void healTiger(Tiger tiger) {

       System.out.println("Tiger is healthy!");
   }

   public void healCheetah(Cheetah cheetah) {

       System.out.println("Cheetah is healthy!");
   }
}
Mukhang nalutas na ang problema: nakasulat na ang klase at handa nang umalis. Pero ano ang gagawin natin kung gusto nating palawigin ang ating programa? Sa kasalukuyan, mayroon lamang kaming 3 uri: leon, tigre, at cheetah. Ngunit mayroong higit sa 40 uri ng pusa sa mundo. Isipin kung ano ang mangyayari kung magdaragdag kami ng magkakahiwalay na klase para sa mga manul, jaguar, Maine Coon, mga pusa sa bahay, at lahat ng iba pa. Paano gamitin ang polymorphism - 2Ang programa mismo ay gagana, siyempre, ngunit kailangan nating patuloy na magdagdag ng mga bagong pamamaraan sa klase ng Dolittle upang pagalingin ang bawat uri ng pusa. Bilang resulta, lalago ito sa mga hindi pa nagagawang laki. Dito pumapasok ang polymorphism — "ang kakayahang magtrabaho kasama ang ilang uri na para bang pareho sila ng uri" -. Hindi natin kailangang gumawa ng hindi mabilang na mga pamamaraan para gawin ang parehong bagay - pagalingin ang isang pusa. Ang isang paraan ay sapat para sa kanilang lahat:
public class Dolittle {

   public void healCat(Cat cat) {

       System.out.println("The patient is healthy!");
   }
}
Ang paraan ng healCat() ay maaaring tumanggap ng mga bagay na Lion , Tiger , at Cheetah — lahat sila ay mga instance ng Cat :
public class Main {

   public static void main(String[] args) {

       Dolittle dolittle = new Dolittle();

       Lion simba = new Lion();
       Tiger shereKhan = new Tiger();
       Cheetah chester = new Cheetah();

       dolittle.healCat(simba);
       dolittle.healCat(shereKhan);
       dolittle.healCat(chester);
   }
}
Output ng console: Malusog ang pasyente! Ang pasyente ay malusog! Ang pasyente ay malusog! Kaya ang aming Dolittlegumagana ang klase na may iba't ibang uri na parang pareho silang uri. Ngayon ay talakayin natin ang pangalawang bahagi: "bukod dito, ang pag-uugali ng mga bagay ay magkakaiba depende sa kanilang uri". Napakasimple ng lahat. Sa kalikasan, ang bawat pusa ay tumatakbo sa ibang paraan. Sa pinakamababa, tumatakbo sila sa iba't ibang bilis. Sa aming tatlong pusa, ang cheetah ang pinakamabilis, habang mas mabagal ang pagtakbo ng tigre at leon. Sa madaling salita, iba ang kanilang pag-uugali. Ang polymorphism ay higit pa sa hayaan tayong gumamit ng iba't ibang uri bilang isa. Nagbibigay-daan din ito sa atin na matandaan ang kanilang mga pagkakaiba, na pinapanatili ang pag-uugali na partikular sa bawat isa sa kanila. Ang sumusunod na halimbawa ay naglalarawan nito. Ipagpalagay na ang aming mga pusa, pagkatapos ng matagumpay na paggaling, ay nagpasya na magsaya sa isang maliit na pagtakbo. Idagdag namin ito sa aming Dolittle class:
public class Dolittle {

   public void healCat(Cat cat) {

       System.out.println("The patient is healthy!");
       cat.run();
   }
}
Subukan nating patakbuhin ang parehong code upang gamutin ang tatlong hayop:
public static void main(String[] args) {

   Dolittle dolittle = new Dolittle();

   Lion simba = new Lion();
   Tiger shereKhan = new Tiger();
   Cheetah chester = new Cheetah();

   dolittle.healCat(simba);
   dolittle.healCat(shereKhan);
   dolittle.healCat(chester);
}
At narito ang hitsura ng mga resulta: Ang pasyente ay malusog! Tumatakbo ang leon sa 80 km/h. Ang pasyente ay malusog! Tumatakbo ang tigre sa 60 km/h. Ang pasyente ay malusog! Ang Cheetah ay tumatakbo nang hanggang 120 km/h Dito malinaw na nakikita natin na ang mga partikular na gawi ng mga bagay ay napanatili, kahit na ipinasa namin ang lahat ng tatlong hayop sa pamamaraan pagkatapos na 'i-generalize' ang mga ito sa Cat . Dahil sa polymorphism, naaalala ng Java na ang mga ito ay hindi lamang tatlong pusa. Sila ay isang leon, tigre, at cheetah, na ang bawat isa ay tumatakbo nang iba. Inilalarawan nito ang pangunahing bentahe ng polymorphism: flexibility. Kapag kailangan nating ipatupad ang ilang functionality na ibinabahagi ng maraming uri, ang mga leon, tigre, at cheetah ay magiging 'pusa' lang. Ang lahat ng mga hayop ay magkakaiba, ngunit sa ilang mga sitwasyon ang isang pusa ay isang pusa, anuman ang uri nito :) Narito ang ilang kumpirmasyon ng video para sa iyo.
Kapag ang 'generalization' na ito ay hindi ginusto at sa halip ay kailangan natin ang bawat species na kumilos nang iba, bawat uri ay gumagawa ng sarili nitong bagay. Salamat sa polymorphism, maaari kang lumikha ng isang interface (set ng mga pamamaraan) para sa isang malawak na hanay ng mga klase. Ginagawa nitong hindi gaanong kumplikado ang mga programa. Kahit na palawakin namin ang programa upang suportahan ang 40 uri ng mga pusa, magkakaroon pa rin kami ng pinakasimpleng interface: isang solong run() na paraan para sa lahat ng 40 pusa.
Mga komento
  • Sikat
  • Bago
  • Luma
Dapat kang naka-sign in upang mag-iwan ng komento
Wala pang komento ang page na ito