Memeriksa prinsip perilaku polimorfik
Polimorfisme memungkinkan objek dari berbagai jenis diperlakukan sebagai objek dari jenis dasar umum. Perilaku ini memungkinkan Anda menulis kode yang berfungsi dengan objek dari beberapa jenis tanpa mengetahui jenis tertentu pada waktu kompilasi.
Misalnya, pertimbangkan Shape kelas dasar dengan kelas turunan Circle dan Rectangle. Anda dapat membuat daftar objek Shape dan menambahkan instans Circle dan Rectangle ke dalamnya. Saat melakukan iterasi di atas daftar, Anda dapat memanggil metode Draw pada setiap objek tanpa mengetahui jenis objek tertentu. Proses ini adalah contoh perilaku polimorfik dalam tindakan.
Pendekatan untuk polimorfisme di C#
Pengembang C# dapat menerapkan polimorfisme menggunakan salah satu pendekatan berikut:
Polimorfisme berbasis warisan: Warisan kelas dalam C# memungkinkan kelas turunan untuk mewarisi anggota dari kelas dasar. Anggota kelas dasar dapat digantikan di kelas turunan untuk menyediakan implementasi yang lebih spesifik. Saat Anda membuat instans kelas dasar yang mereferensikan jenis kelas turunan, Anda dapat mengakses anggota kelas turunan dari objek kelas dasar. Polimorfisme berbasis warisan adalah cara umum untuk mengimplementasikan polimorfisme dalam C#.
Polimorfisme berbasis antarmuka: Antarmuka di C# mendefinisikan kontrak yang dapat diterapkan kelas. Saat kelas menerapkan antarmuka, kelas menerima sekumpulan properti dan metode yang diperlukan untuk diterapkan. Persyaratan ini memungkinkan perilaku polimorfik, di mana referensi antarmuka dapat mengarahkan objek dari kelas yang berbeda untuk mengimplementasikan serangkaian properti dan metode. Polimorfisme berbasis antarmuka adalah cara umum lain untuk mengimplementasikan polimorfisme dalam C#.
Metode kelebihan beban versus penimpaan metode
Penyusunan ulang metode dan pengalihan metode adalah dua teknik umum untuk menerapkan panggilan metode yang menghasilkan perilaku yang berbeda. Berikut adalah perbandingan dari dua teknik tersebut:
Kelebihan muatan metode: Kelebihan muatan metode memungkinkan Anda menentukan beberapa metode dengan nama yang sama tetapi parameter yang berbeda di kelas yang sama. Metode yang akan dipanggil ditentukan pada waktu kompilasi berdasarkan tanda tangan metode. Metode kelebihan muatan sering disebut sebagai polimorfisme waktu kompilasi.
Penimpaan metode: Penimpaan metode memungkinkan kelas turunan untuk memberikan implementasi tertentu dari metode yang sudah ditentukan dalam kelas dasarnya. Metode yang akan dipanggil ditentukan pada runtime berdasarkan jenis objek yang sebenarnya. Pengesampingan metode adalah contoh polimorfisme runtime.
Pelatihan ini berfokus pada penimpaan metode, yang merupakan aspek utama polimorfisme dalam C#.
Prinsip polimorfisme dalam C#
Polimorfisme didasarkan pada prinsip-prinsip berikut:
- Penimpaan metode: Penimpaan metode memungkinkan kelas turunan untuk memberikan implementasi tertentu dari metode yang sudah ditentukan di kelas dasarnya. Kemampuan ini dimungkinkan oleh warisan dan merupakan aspek utama dari polimorfisme runtime.
- Metode virtual dan abstrak: Kata kunci virtual digunakan untuk mendeklarasikan metode pada kelas induk yang dapat ditimpa pada kelas turunan. Kata kunci abstrak digunakan untuk mendeklarasikan metode yang harus ditimpa dalam kelas turunan.
- Referensi kelas dasar: Polimorfisme memungkinkan referensi kelas dasar untuk menunjuk ke objek kelas turunan. Mekanisme pewarisan ini memungkinkan pemanggilan metode yang di-overriding dalam kelas turunan melalui referensi kelas dasar.
- Polimorfisme berbasis antarmuka: Antarmuka menentukan kontrak yang dapat diterapkan kelas. Kontrak ini memungkinkan kelas yang berbeda diperlakukan secara seragam melalui antarmuka umum, mempromosikan kopling yang longgar dan fleksibilitas.
Manfaat polimorfisme
Penggunaan kembali kode: Polimorfisme mempromosikan penggunaan kembali kode dengan memungkinkan kode yang sama berfungsi dengan berbagai jenis objek.
Fleksibilitas dan ketahanan: Polimorfisme meningkatkan fleksibilitas dan pemeliharaan dengan memisahkan kode yang menggunakan objek dari kode yang mendefinisikan objek.
Ekstensibilitas: Polimorfisme memudahkan untuk memperluas sistem dengan menambahkan kelas baru yang mengimplementasikan antarmuka yang sama atau mewarisi dari kelas dasar yang sama.
Ringkasan
Polimorfisme adalah konsep utama dalam pemrograman berorientasi objek yang memungkinkan fleksibilitas, penggunaan kembali, dan pemeliharaan dalam kode. Dengan memahami prinsip-prinsip polimorfisme dan implementasinya dalam C#, Anda dapat membuat aplikasi modular dan dapat diperluas yang lebih mudah dipertahankan dan berkembang dari waktu ke waktu.