JavaRush /Java Blog /Random-ID /Praktek menggunakan polimorfisme

Praktek menggunakan polimorfisme

Dipublikasikan di grup Random-ID
Halo! Hari ini kita menyelesaikan serangkaian kuliah tentang prinsip-prinsip OOP . Dalam pelajaran ini kita akan berbicara tentang polimorfisme. Praktek menggunakan polimorfisme - 1Polimorfisme adalah kemampuan untuk memperlakukan beberapa tipe seolah-olah mereka adalah tipe yang sama. Dalam hal ini, perilaku objek akan berbeda bergantung pada tipenya. Mari kita lihat pernyataan ini lebih detail. Mari kita mulai dengan bagian pertama: "kemampuan untuk bekerja dengan beberapa tipe seolah-olah mereka adalah tipe yang sama." Bagaimana tipe yang berbeda bisa menjadi satu dan sama? Kedengarannya agak aneh :/ Sebenarnya sederhana. Misalnya, situasi ini muncul dalam penggunaan warisan secara normal. Mari kita lihat cara kerjanya. Katakanlah kita memiliki kelas induk sederhana Catdengan satu metode run()- “jalankan”:
public class Cat {

   public void run() {
       System.out.println("Бег!");
   }
}
Sekarang mari kita buat tiga kelas yang mewarisi dari Cat: Lion, Tigerdan Cheetah, yang menunjukkan singa, harimau, dan 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 км/ч");
   }
}
Jadi kita punya 3 kelas. Mari kita simulasikan situasi di mana kita dapat bekerja dengan mereka seolah-olah mereka adalah kelas yang sama. Bayangkan salah satu kucing kita sedang sakit dan membutuhkan bantuan Dr. Aibolit. Mari kita coba membuat kelas Aibolityang mampu menangani singa, harimau, dan 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("Гепард здоров!");
   }
}
Tampaknya masalahnya telah terpecahkan - kelas telah ditulis dan siap digunakan. Namun apa yang akan kami lakukan jika kami ingin memperluas program kami? Sekarang kita hanya punya 3 spesies: singa, harimau, dan cheetah. Namun ada lebih dari 40 spesies kucing di dunia. Bayangkan apa yang akan terjadi jika kita menambahkan kelas terpisah ke dalam program untuk kucing Pallas, jaguar, Maine coon, kucing rumahan, dan lainnya. Praktek menggunakan polimorfisme - 2Program itu sendiri, tentu saja, akan berfungsi, tetapi kelas Aibolitharus terus menambahkan metode baru untuk merawat setiap jenis kucing, dan sebagai hasilnya, kucing tersebut akan berkembang ke ukuran yang belum pernah terjadi sebelumnya. Di sinilah sifat polimorfisme berperan - “kemampuan untuk bekerja dengan beberapa tipe seolah-olah mereka adalah tipe yang sama.” Kita tidak perlu menciptakan banyak metode yang akan menghasilkan hal yang sama - merawat kucing. Satu metode saja sudah cukup untuk semua kasus sekaligus:
public class Aibolit {

   public void healCat(Cat cat) {

       System.out.println("Пациент здоров!");
   }
}
healCat()Kita dapat meneruskan objek Liondan Tigerobjek ke metode ini Cheetah- semuanya adalah 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);
   }
}
Keluaran konsol:

Пациент здоров!
Пациент здоров!
Пациент здоров!
Ini adalah bagaimana kelas kita Айболитdapat bekerja dengan tipe yang berbeda seolah-olah mereka adalah tipe yang sama. Sekarang mari kita bahas bagian kedua: "dalam hal ini, perilaku objek akan berbeda tergantung pada tipenya." Semuanya juga sederhana di sini. Di alam, semua kucing berjalan dengan cara yang berbeda. Minimal, kecepatan lari mereka berbeda. Di antara ketiga hewan peliharaan kita, cheetah adalah yang tercepat, sedangkan harimau dan singa berlari lebih lambat. Artinya, perilaku mereka berbeda. Polimorfisme tidak hanya memberi kita kemampuan untuk menggunakan tipe yang berbeda menjadi satu. Pada saat yang sama, hal ini memungkinkan kita untuk tidak melupakan perbedaan mereka dan mempertahankan perilaku khusus untuk masing-masing perbedaan tersebut. Hal ini dapat dipahami dengan contoh ini. Katakanlah setelah pemulihan berhasil, kucing kita memutuskan untuk berlarian sedikit untuk merayakannya. Mari tambahkan ini ke kelas kita Aibolit:
public class Aibolit {

   public void healCat(Cat cat) {

       System.out.println("Пациент здоров!");
       cat.run();
   }
}
Mari kita coba menjalankan kode yang sama untuk menangani tiga hewan:
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);
}
Dan hasilnya akan seperti ini:

Пациент здоров!
Лев бежит со speedю 80 км/ч
Пациент здоров!
Тигр бежит со speedю 60 км/ч
Пациент здоров!
Гепард бежит со speedю до 120 км/ч
Di sini kita melihat dengan jelas bahwa perilaku spesifik objek kita dipertahankan, meskipun kita memasukkan ketiga hewan ke dalam sebuah metode, “menggeneralisasi” masing-masing hewan menjadi Cat. Berkat polimorfisme, Java mengingat dengan sempurna bahwa ini bukan hanya tiga kucing, tetapi seekor singa, seekor harimau, dan seekor cheetah, yang cara larinya berbeda. Inilah keuntungan utama menggunakan polimorfisme - fleksibilitas . Saat kita perlu membuat beberapa fungsi yang umum pada banyak spesies, singa, harimau, dan cheetah berubah menjadi “kucing”. Semua hewan berbeda, tetapi dalam beberapa situasi - kucing tetaplah kucing, apa pun spesiesnya :) Berikut konfirmasi videonya.
Ketika “generalisasi” ini tidak diperlukan, dan sebaliknya kita memerlukan perilaku spesies yang berbeda, setiap jenis akan berperilaku berbeda. Berkat polimorfisme, Anda membuat satu antarmuka (kumpulan metode) untuk berbagai kelas. Hal ini mengurangi kompleksitas program. Bahkan jika kami memperluas program ke 40 jenis kucing, kami masih memiliki antarmuka yang paling sederhana - satu metode run()untuk 40 kucing.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION