1. Paus dan lembu
Berikut adalah fakta zoologi yang menarik: seekor lembu lebih dekat dengan ikan paus daripada, sebagai contoh, dengan seekor kuda nil. Ternyata lembu dan ikan paus adalah saudara yang agak rapat.
Tengok sini. Mari beritahu anda tentang polimorfisme — satu lagi alat OOP yang sangat berkuasa . Ia mempunyai empat ciri.
2. Warisan bukanlah ubat penawar
Bayangkan anda telah menulis Cow
kelas untuk permainan. Ia mempunyai banyak bidang dan kaedah. Objek kelas ini boleh melakukan pelbagai perkara: berjalan, makan dan tidur. Lembu juga memakai loceng yang berbunyi apabila mereka berjalan. Katakan anda telah melaksanakan segala-galanya dalam kelas kepada butiran terkecil.
Dan kemudian pelanggan anda datang dan berkata dia mahu mengeluarkan tahap permainan baharu, di mana semua tindakan berlaku di laut, dan watak utama ialah ikan paus.
Anda mula mereka bentuk Whale
kelas dan menyedari bahawa ia hanya berbeza sedikit daripada Cow
kelas. Logik kedua-dua kelas adalah sangat serupa dan anda memutuskan untuk menggunakan warisan.
Kelas ini Cow
sesuai untuk mengambil peranan kelas induk: ia mempunyai semua pembolehubah dan kaedah yang diperlukan. Apa yang perlu kita lakukan ialah memberi ikan paus keupayaan untuk berenang. Tetapi ada masalah: ikan paus anda mempunyai kaki, tanduk dan loceng. Lagipun, fungsi ini dilaksanakan di dalam Cow
kelas. Apa yang boleh dilakukan di sini?
3. Kaedah mengatasi
Kaedah mengatasi datang untuk menyelamatkan kami. Jika kami mewarisi kaedah yang tidak cukup melakukan apa yang kami mahu dalam kelas baharu kami, kami boleh menggantikan kaedah itu dengan kaedah lain.
Bagaimana ini dilakukan? Dalam kelas keturunan kami, kami mengisytiharkan kaedah yang sama seperti kaedah kelas induk yang ingin kami ganti. Kami menulis kod baharu kami di dalamnya. Dan itu sahaja - seolah-olah kaedah lama dalam kelas induk langsung tidak wujud.
Ini adalah cara ia berfungsi:
Kod | Penerangan |
---|---|
|
|
|
Kod ini memaparkan teks berikut pada skrin:
|
|
Kod ini memaparkan perkara berikut pada skrin:
|
Selepas mewarisi Cow
kelas dan mengatasi printName
kaedah, Whale
kelas sebenarnya mengandungi data dan kaedah berikut:
|
Kami tidak tahu mana-mana kaedah lama. |
GO TO FULL VERSION