Rumah > Java > javaTutorial > Mengapa Akses Medan Dilindungi Bendera Eclipse sebagai Tidak Sah dalam Warisan Java?

Mengapa Akses Medan Dilindungi Bendera Eclipse sebagai Tidak Sah dalam Warisan Java?

Patricia Arquette
Lepaskan: 2024-12-15 10:28:15
asal
874 orang telah melayarinya

Why Does Eclipse Flag Protected Field Access as Invalid in Java Inheritance?

Memahami Java's Protected Modifier

Eclipse's Confusion over Protected Access

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.

Analisis Isu

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.

Menyelesaikan Percanggahan

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan