JavaRush /Blog Jawa /Random-JV /Praktek nggunakake polimorfisme

Praktek nggunakake polimorfisme

Diterbitake ing grup
Hello! Dina iki kita ngrampungake seri ceramah babagan prinsip OOP . Ing wulangan iki kita bakal ngomong babagan polimorfisme. Praktek nggunakake polimorfisme - 1Polimorfisme yaiku kemampuan kanggo nambani macem-macem jinis kaya-kaya padha karo jinis sing padha. Ing kasus iki, prilaku obyek bakal beda-beda gumantung saka jinis apa. Ayo ndeleng statement iki kanthi luwih rinci. Ayo diwiwiti kanthi bagean pisanan: "kemampuan kanggo nggarap macem-macem jinis kaya-kaya padha jinis." Kepiye macem-macem jinis bisa dadi siji lan padha? Muni rada aneh :/ Iku bener prasaja. Contone, kahanan iki muncul kanthi nggunakake warisan normal. Ayo ndeleng cara kerjane. Ayo kita duwe kelas induk sing prasaja Catkanthi cara siji run()- "run":
public class Cat {

   public void run() {
       System.out.println("Бег!");
   }
}
Saiki ayo nggawe telung kelas sing diwenehi warisan saka Cat: Lion, Tigerlan Cheetah, sing nuduhake singa, macan lan 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 км/ч");
   }
}
Dadi kita duwe 3 kelas. Ayo dadi simulasi kahanan ing ngendi kita bisa nggarap dheweke kaya-kaya padha kelas. Coba bayangake yen salah sawijining kucing kita lara lan butuh bantuan saka Dr Aibolit. Ayo coba nggawe kelas Aibolitsing bisa nambani singa, macan, lan 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("Гепард здоров!");
   }
}
Iku bakal katon yen masalah wis ditanggulangi - kelas wis ditulis lan siap kanggo nggunakake. Nanging apa sing bakal kita lakoni yen kita pengin nggedhekake program kita? Saiki mung ana 3 spesies: singa, macan, lan cheetah. Nanging ana luwih saka 40 spesies kucing ing donya. Mbayangno apa sing bakal kelakon yen kita nambah program kelas kapisah kanggo kucing Pallas, jaguar, Maine coons, kucing domestik lan wong liya. Praktek nggunakake polimorfisme - 2Program kasebut, mesthine, bakal bisa digunakake, nanging kelas Aibolitkudu terus nambah cara anyar kanggo ngobati saben jinis kucing, lan minangka asil bakal tuwuh dadi ukuran sing durung ana sadurunge. Iki minangka properti polimorfisme - "kemampuan kanggo nggarap sawetara jinis kaya-kaya padha karo jinis sing padha." Kita ora perlu nggawe cara sing ora kaetung sing bakal nindakake perkara sing padha - nambani kucing. Siji cara bakal cukup kanggo kabeh kasus sekaligus:
public class Aibolit {

   public void healCat(Cat cat) {

       System.out.println("Пациент здоров!");
   }
}
healCat()Kita bisa ngliwati obyek Lionlan Tigerobyek menyang metode Cheetah- kabeh yaiku 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 konsol:

Пациент здоров!
Пациент здоров!
Пациент здоров!
Iki carane kelas kita Айболитbisa digunakake karo macem-macem jinis kaya padha jinis padha. Saiki ayo menehi hasil karo bagean kapindho: "ing kasus iki, prilaku obyek bakal beda-beda gumantung saka jinis apa sing dadi kagungane." Kabeh uga prasaja ing kene. Ing alam, kabeh kucing mlaku kanthi beda. Paling ora, kacepetan mlaku beda-beda. Ing antarane telung pets, cheetah paling cepet, dene macan lan singa mlaku luwih alon. Tegese, kelakuane beda-beda. Polimorfisme ora mung menehi kita kemampuan kanggo nggunakake macem-macem jinis minangka siji. Ing wektu sing padha, ngidini kita ora lali babagan bedane lan njaga prilaku tartamtu kanggo saben wong. Iki bisa dimangerteni nganggo conto iki. Ayo dadi ngomong yen sawise Recovery sukses, kucing kita mutusaké kanggo mbukak watara sethitik kanggo ngrameke. Ayo ditambahake ing kelas kita Aibolit:
public class Aibolit {

   public void healCat(Cat cat) {

       System.out.println("Пациент здоров!");
       cat.run();
   }
}
Ayo nyoba mbukak kode sing padha kanggo nambani telung kewan:
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);
}
Lan iki minangka asil sing bakal katon:

Пациент здоров!
Лев бежит со speedю 80 км/ч
Пациент здоров!
Тигр бежит со speedю 60 км/ч
Пациент здоров!
Гепард бежит со speedю до 120 км/ч
Kene kita cetha weruh sing prilaku tartamtu saka obyek iki wadi, sanajan kita liwati kabeh telung kewan menyang cara, "generalizing" saben wong kanggo Cat. Thanks kanggo polymorphism, Jawa sampurna ngelingi sing iki ora mung telung kucing, nanging singa, macan lan cheetah, kang mlaku beda. Iki minangka kauntungan utama nggunakake polimorfisme - keluwesan . Nalika kita kudu nggawe sawetara fungsi sing umum kanggo akeh jinis, singa, macan lan cheetah mung dadi "kucing". Kabeh kewan beda-beda, nanging ing sawetara kahanan - kucing iku kucing, ora ketompo spesies apa sing dadi kagungane :) Punika konfirmasi video kanggo sampeyan.
Nalika "generalisasi" iki ora dibutuhake, lan ing nalisir kita kudu prilaku spesies beda, saben jinis tumindak beda. Thanks kanggo polimorfisme, sampeyan nggawe antarmuka siji (set metode) kanggo macem-macem kelas. Amarga iki, kerumitan program wis suda. Sanajan kita ngembangake program kasebut dadi 40 jinis kucing, kita isih bakal duwe antarmuka sing paling gampang - siji cara run()kanggo kabeh 40 kucing.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION