CodeGym/Java Blog/Acak/Polimorfisme di Jawa
John Squirrels
Level 41
San Francisco

Polimorfisme di Jawa

Dipublikasikan di grup Acak
anggota
Hai! Hari ini kami menyimpulkan serangkaian pelajaran tentang prinsip-prinsip OOP. Dalam pelajaran ini, kita akan berbicara tentang polimorfisme Java. Polimorfisme adalah kemampuan untuk bekerja dengan beberapa jenis seolah-olah mereka adalah jenis yang sama. Selain itu, perilaku objek akan berbeda tergantung pada jenisnya. Mari kita lihat lebih dekat pernyataan ini. Mari kita mulai dengan bagian pertama: 'kemampuan untuk bekerja dengan beberapa tipe seolah-olah mereka adalah tipe yang sama'. Bagaimana tipe yang berbeda bisa sama? Kedengarannya agak aneh :/ Cara menggunakan polimorfisme - 1Nyatanya, semuanya sangat sederhana. Misalnya, situasi ini muncul selama penggunaan biasa atas warisan. Mari kita lihat cara kerjanya. Misalkan kita memiliki kelas induk Cat sederhana dengan metode run() tunggal :
public class Cat {

   public void run() {
       System.out.println("Run!");
   }
}
Sekarang kita akan membuat tiga kelas yang mewarisi Cat : Lion , Tiger dan 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");
   }
}
Jadi kita punya 3 kelas. Mari buat model situasi di mana kita dapat bekerja dengan mereka seolah-olah mereka adalah kelas yang sama. Bayangkan salah satu kucing kita sakit dan butuh bantuan dari Dr. Dolittle. Mari kita coba membuat kelas Dolittle yang dapat menyembuhkan singa, harimau, dan 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!");
   }
}
Sepertinya masalahnya sudah terpecahkan: kelas sudah ditulis dan siap digunakan. Tapi apa yang akan kita lakukan jika kita ingin memperpanjang program kita? Saat ini kami hanya memiliki 3 jenis: singa, harimau, dan cheetah. Tapi ada lebih dari 40 jenis kucing di dunia. Bayangkan apa yang akan terjadi jika kita menambahkan kelas terpisah untuk manul, jaguar, Maine Coon, kucing rumahan, dan lainnya. Cara menggunakan polimorfisme - 2Program itu sendiri tentu saja akan berfungsi, tetapi kita harus terus menambahkan metode baru ke kelas Dolittle untuk menyembuhkan setiap jenis kucing. Akibatnya, itu akan tumbuh ke ukuran yang belum pernah terjadi sebelumnya. Di sinilah polimorfisme — "kemampuan untuk bekerja dengan beberapa jenis seolah-olah mereka adalah jenis yang sama" — masuk. Kita tidak perlu membuat banyak metode untuk melakukan hal yang sama — menyembuhkan kucing. Satu metode sudah cukup untuk semuanya:
public class Dolittle {

   public void healCat(Cat cat) {

       System.out.println("The patient is healthy!");
   }
}
Metode healCat() dapat menerima objek Lion , Tiger , dan Cheetah — semuanya adalah instance dari 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 konsol: Pasien sehat! Pasien sehat! Pasien sehat! Jadi Dolittle kamikelas bekerja dengan tipe yang berbeda seolah-olah mereka adalah tipe yang sama. Sekarang mari kita bahas bagian kedua: "selain itu, perilaku objek akan berbeda bergantung pada jenisnya". Semuanya sangat sederhana. Di alam, setiap kucing berlari dengan cara yang berbeda. Minimal, mereka berjalan pada kecepatan yang berbeda. Di antara ketiga kucing kami, cheetah adalah yang tercepat, sedangkan harimau dan singa berlari lebih lambat. Dengan kata lain, perilaku mereka berbeda. Polimorfisme lebih dari sekadar membiarkan kita menggunakan tipe yang berbeda sebagai satu. Itu juga memungkinkan kita mengingat perbedaan mereka, mempertahankan perilaku khusus untuk masing-masing dari mereka. Contoh berikut mengilustrasikan hal ini. Misalkan kucing kita, setelah sembuh dengan sukses, memutuskan untuk menikmati sedikit lari. Kami akan menambahkan ini ke kelas Dolittle kami :
public class Dolittle {

   public void healCat(Cat cat) {

       System.out.println("The patient is healthy!");
       cat.run();
   }
}
Mari kita coba menjalankan kode yang sama untuk merawat tiga hewan:
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);
}
Dan inilah hasilnya: Pasien sehat! Singa berlari dengan kecepatan 80 km/jam. Pasien sehat! Harimau berlari dengan kecepatan 60 km/jam. Pasien sehat! Cheetah berlari hingga 120 km/jam Di sini kita melihat dengan jelas bahwa perilaku khusus objek dipertahankan, meskipun kita meneruskan ketiga hewan ke metode setelah 'menggeneralisasi' mereka ke Cat . Karena polimorfisme, Java mengingat dengan baik bahwa ini bukan sembarang tiga kucing. Mereka adalah singa, harimau, dan cheetah, yang masing-masing berjalan berbeda. Ini menggambarkan keunggulan utama polimorfisme: fleksibilitas. Saat kita perlu menerapkan beberapa fungsi yang dimiliki oleh banyak jenis, maka singa, harimau, dan cheetah menjadi 'kucing'. Semua hewan berbeda, tetapi dalam beberapa situasi, kucing adalah kucing, apa pun spesiesnya :) Ini beberapa konfirmasi video untuk Anda.
Ketika 'generalisasi' ini tidak diinginkan dan kita malah membutuhkan setiap spesies untuk berperilaku berbeda, setiap jenis melakukan hal-halnya sendiri. Berkat polimorfisme, Anda dapat membuat satu antarmuka (kumpulan metode) untuk berbagai kelas. Ini membuat program tidak terlalu rumit. Bahkan jika kita memperluas program untuk mendukung 40 jenis kucing, kita masih memiliki antarmuka yang paling sederhana: satu metode run() untuk semua 40 kucing.
Komentar
  • Populer
  • Baru
  • Lama
Anda harus login untuk memberikan komentar
Halaman ini belum memiliki komentar