JavaRush /Java Blog /Random-TL /Pagsasanay sa paggamit ng polymorphism

Pagsasanay sa paggamit ng polymorphism

Nai-publish sa grupo
Kamusta! Ngayon ay tinatapos namin ang isang serye ng mga lektura sa mga prinsipyo ng OOP . Sa araling ito ay pag-uusapan natin ang tungkol sa polymorphism. Pagsasanay sa paggamit ng polymorphism - 1Ang polymorphism ay ang kakayahang tratuhin ang maraming uri na parang pareho silang uri. Sa kasong ito, ang pag-uugali ng mga bagay ay mag-iiba depende sa kung anong uri sila nabibilang. Tingnan natin ang pahayag na ito nang mas detalyado. Magsimula tayo sa unang bahagi: "ang kakayahang magtrabaho kasama ang maraming uri na para bang pareho sila ng uri." Paano magiging isa at pareho ang iba't ibang uri? Parang kakaiba :/ Simple lang talaga. Halimbawa, ang sitwasyong ito ay lumitaw sa normal na paggamit ng mana. Tingnan natin kung paano ito gumagana. Sabihin nating mayroon kaming isang simpleng klase ng magulang Catna may isang paraan run()- "tumakbo":
public class Cat {

   public void run() {
       System.out.println("Бег!");
   }
}
Ngayon gumawa tayo ng tatlong klase na nagmana mula sa Cat: Lion, Tigerat Cheetah, na nagsasaad ng leon, tigre at cheetah.
public class Lion extends Cat {

   @Override
   public void run() {
       System.out.println("Лев бежит со speedю 80 км/ч");
   }
}

public class Tiger extends Cat {

   @Override
   public void run() {
       System.out.println("Тигр бежит со speedю 60 км/ч");
   }
}

public class Cheetah extends Cat {

   @Override
   public void run() {
       System.out.println("Гепард бежит со speedю до 120 км/ч");
   }
}
Kaya may 3 klase kami. Gayahin natin ang isang sitwasyon kung saan maaari tayong makipagtulungan sa kanila na parang pareho sila ng klase. Isipin natin na ang isa sa ating mga pusa ay may sakit at nangangailangan ng tulong ni Dr. Aibolit. Subukan nating lumikha ng isang klase Aibolitna magagawang gamutin ang mga leon, tigre, at cheetah.
public class Aibolit {

   public void healLion(Lion lion) {

       System.out.println("Лев здоров!");
   }

   public void healTiger(Tiger tiger) {

       System.out.println("Тигр здоров!");
   }

   public void healCheetah(Cheetah cheetah) {

       System.out.println("Гепард здоров!");
   }
}
Mukhang nalutas na ang problema - ang klase ay nakasulat at handa nang gamitin. Ngunit ano ang gagawin natin kung gusto nating palawakin ang ating programa? Ngayon mayroon na lang tayong 3 species: leon, tigre, at cheetah. Ngunit mayroong higit sa 40 species ng pusa sa mundo. Isipin kung ano ang mangyayari kung magdagdag tayo sa programa ng magkakahiwalay na klase para sa mga pusa ni Pallas, jaguar, Maine coon, domestic cats at lahat ng iba pa. Pagsasanay sa paggamit ng polymorphism - 2Ang programa mismo, siyempre, ay gagana, ngunit ang klase Aibolitay kailangang patuloy na magdagdag ng mga bagong pamamaraan para sa paggamot sa bawat uri ng pusa, at bilang isang resulta ito ay lalago sa mga hindi pa nagagawang laki. Dito pumapasok ang pag-aari ng polymorphism - "ang kakayahang magtrabaho kasama ang ilang uri na parang pareho silang uri." Hindi namin kailangang lumikha ng hindi mabilang na mga pamamaraan na gagawa ng parehong bagay - gamutin ang pusa. Ang isang paraan ay magiging sapat para sa lahat ng mga kaso nang sabay-sabay:
public class Aibolit {

   public void healCat(Cat cat) {

       System.out.println("Пациент здоров!");
   }
}
healCat()Maaari naming ipasa ang parehong mga bagay Lionat Tigerbagay sa pamamaraan Cheetah- lahat sila ay Cat:
public class Main {

   public static void main(String[] args) {

       Aibolit aibolit = new Aibolit();

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

       aibolit.healCat(simba);
       aibolit.healCat(sherekhan);
       aibolit.healCat(chester);
   }
}
Output ng console:

Пациент здоров!
Пациент здоров!
Пациент здоров!
Ito ay kung paano ang aming klase Айболитay maaaring gumana sa iba't ibang mga uri na parang pareho silang uri. Ngayon ay haharapin natin ang pangalawang bahagi: "sa kasong ito, ang pag-uugali ng mga bagay ay magkakaiba depende sa kung anong uri sila nabibilang." Ang lahat ay simple din dito. Sa kalikasan, ang lahat ng mga pusa ay tumatakbo nang iba. Sa pinakamababa, ang kanilang bilis sa pagtakbo ay naiiba. Sa aming tatlong alagang hayop, ang cheetah ang pinakamabilis, habang ang tigre at leon ay mas mabagal sa pagtakbo. Ibig sabihin, iba ang ugali nila. Ang polymorphism ay hindi lamang nagbibigay sa atin ng kakayahang gumamit ng iba't ibang uri bilang isa. Kasabay nito, pinapayagan kaming huwag kalimutan ang tungkol sa kanilang mga pagkakaiba at pinapanatili ang pag-uugali na tiyak sa bawat isa sa kanila. Maiintindihan ito sa halimbawang ito. Sabihin natin na pagkatapos ng matagumpay na paggaling, nagpasya ang aming mga pusa na tumakbo sa paligid ng kaunti upang magdiwang. Idagdag natin ito sa ating klase Aibolit:
public class Aibolit {

   public void healCat(Cat cat) {

       System.out.println("Пациент здоров!");
       cat.run();
   }
}
Subukan nating patakbuhin ang parehong code upang gamutin ang tatlong hayop:
public static void main(String[] args) {

   Aibolit aibolit = new Aibolit();

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

   aibolit.healCat(simba);
   aibolit.healCat(sherekhan);
   aibolit.healCat(chester);
}
At ito ang magiging resulta:

Пациент здоров!
Лев бежит со speedю 80 км/ч
Пациент здоров!
Тигр бежит со speedю 60 км/ч
Пациент здоров!
Гепард бежит со speedю до 120 км/ч
Dito ay malinaw na nakikita natin na ang partikular na pag-uugali ng ating mga bagay ay napanatili, bagama't ipinasa namin ang lahat ng tatlong hayop sa isang pamamaraan, na "na-generalize" ang bawat isa sa kanila sa Cat. Salamat sa polymorphism, ganap na natatandaan ng Java na ang mga ito ay hindi lamang tatlong pusa, kundi isang leon, tigre at cheetah, na tumatakbo nang iba. Ito ang pangunahing bentahe ng paggamit ng polymorphism-flexibility . Kapag kailangan nating lumikha ng ilang pag-andar na karaniwan sa maraming uri, ang mga leon, tigre at cheetah ay nagiging "pusa". Ang lahat ng mga hayop ay iba, ngunit sa ilang mga sitwasyon - ang isang pusa ay isang pusa, kahit na anong species ito ay nabibilang :) Narito ang kumpirmasyon ng video para sa iyo.
Kapag ang "generalization" na ito ay hindi kinakailangan, at sa kabaligtaran kailangan natin ang pag-uugali ng mga species upang maging iba, ang bawat uri ay kumikilos nang iba. Salamat sa polymorphism, lumikha ka ng isang interface (set ng mga pamamaraan) para sa isang malawak na hanay ng mga klase. Dahil dito, nababawasan ang pagiging kumplikado ng mga programa. Kahit na pinalawak namin ang programa sa 40 uri ng pusa, magkakaroon pa rin kami ng pinakasimpleng posibleng interface - isang paraan run()para sa lahat ng 40 pusa.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION