Rumah >Java >javaTutorial >Mengapa Akses Medan Dilindungi Bendera Eclipse sebagai Tidak Sah dalam Warisan Java?
Apabila memeriksa hierarki kelas, Eclipse tersilap menandakan akses medan yang dilindungi sebagai tidak sah . Percanggahan yang jelas ini timbul daripada salah faham kefungsian yang dimaksudkan bagi pengubah yang dilindungi.
Menurut Spesifikasi Bahasa Java (JLS), ahli yang dilindungi boleh diakses dalam pakej kelas pengisytiharan dan oleh subkelas kelas itu, tanpa mengira daripada pakej subkelas. Dalam kes ini, kelas A mengisytiharkan medan yang dilindungi protectedInt.
Dalam contoh yang diberikan, kelas C melanjutkan kelas A, yang bermaksud bahawa tika C harus mempunyai akses kepada medan protectedInt A. Walau bagaimanapun, Eclipse melaporkan bahawa akses adalah dilarang apabila menggunakan contoh A dalam C.
Penyelesaian terletak pada pemahaman bahawa akses yang dilindungi dihadkan kepada subkelas kelas pengisytiharan. Oleh itu, medan protectedInt A hanya boleh diakses oleh contoh C atau subkelas C. Ini ialah perbezaan penting yang terlepas oleh Eclipse.
Untuk menggambarkan, mengakses protectedInt melalui contoh C akan berfungsi seperti yang dimaksudkan:
C c = new C(); System.out.println(c.protectedInt); // Access to 'protectedInt' allowed
Akhirnya, pengubah suai yang dilindungi menyediakan akses terkawal kepada medan dan kaedah, membolehkannya diwarisi oleh subkelas sambil mengekalkan enkapsulasi dalam pakej.
Atas ialah kandungan terperinci Mengapa Akses Medan Dilindungi Bendera Eclipse sebagai Tidak Sah dalam Warisan Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!