Memahami Casting Atas vs. Casting Bawah dalam Konteks Pembolehubah Kelas
Tuangan atas dan tuangan bawah ialah dua konsep utama dalam objek -pengaturcaraan berorientasikan yang melibatkan penukaran antara jenis super dan sub. Mari kita terokai konsep-konsep ini berhubung dengan pembolehubah kelas.
Up-casting: Super to Sub Type
Up-casting merujuk kepada menukar objek subclass kepada its jenis kelas super. Ini dibenarkan kerana semua subkelas sememangnya mewarisi daripada kelas super mereka. Sebagai contoh, dalam kod yang diberikan:
class Animal { /* ... */ } class Dog extends Animal { /* ... */ } Dog d = new Dog(); Animal a = (Animal) d;
Tugasan Haiwan a = (Haiwan) d; ialah pelakon baru, kerana kami menukar Anjing (sub kelas) kepada Haiwan (kelas super). Ini dibenarkan memandangkan Anjing ialah Haiwan.
Turun turun: Sub kepada Jenis Super
Turun turun, sebaliknya, melibatkan penukaran objek daripada jenis kelas super kepada jenis sub kelasnya. Ini tidak selalunya selamat dan memerlukan semakan jenis masa jalan untuk memastikan penukaran adalah sah.
Dalam kod contoh, jika kita cuba menurunkan a ke Dog:
Dog notADog = (Dog) a; // Potential ClassCastException
Ini boleh mengakibatkan ClassCastException kerana ia boleh merujuk objek Haiwan yang bukan Anjing.
Mengakses Subkelas Kaedah
Untuk memanggil kaedah khusus kepada subkelas selepas penghantaran naik, anda perlu melakukan penukaran jenis pada titik memanggil kaedah:
a.callme(); // calls Animal's callme() method ((Dog) a).callme2(); // calls Dog's callme2() method
Kesimpulan
Memahami perbezaan antara tuangan atas dan tuangan bawah adalah penting untuk memanfaatkan warisan dengan berkesan. Hantaran atas secara amnya selamat dan membolehkan pengikatan dinamik manakala penuangan ke bawah memerlukan penggunaan yang teliti untuk mengelakkan ralat masa jalan.
Atas ialah kandungan terperinci Apakah Perbezaan Antara Tuangan Atas dan Tuangan Bawah dalam Pembolehubah Kelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!