Rumah >Java >javaTutorial >Mengapa Saya Tidak Boleh Mengakses Ahli Dilindungi dalam Subkelas Java Daripada Pakej Lain?
Masalah:
Pertimbangkan dua kelas, A dan C, di mana C memanjangkan A. Katakan A mengisytiharkan pembolehubah contoh sebagai dilindungi int protectedInt = 1. Walaupun jangkaan bahawa ahli yang dilindungi harus boleh diakses dalam subkelas dalam pakej lain, Eclipse menandakan akses kepada protectedInt dalam kelas C sebagai tidak kelihatan.
Jawapan:
Pengubah suai dilindungi Java membenarkan akses kepada ahli dalam pakejnya sendiri dan mengikut subkelas, tetapi hanya apabila akses dibuat melalui contoh subkelas. Ini kerana capaian yang dilindungi diskop kepada jenis subkelas, bukan kepada kelas di mana ahli yang dilindungi diisytiharkan.
Menurut Spesifikasi Bahasa Java (JLS), "Akses hanya dibenarkan dalam badan subkelas S daripada C." Ini bermakna walaupun C memanjangkan A, akses langsung protectedInt daripada contoh A tidak dibenarkan.
Penyelesaian:
Untuk mengakses ahli yang dilindungi dalam subkelas , jenis subkelas mesti digunakan. Sebagai contoh, kod berikut adalah sah:
C c = new C(); System.out.println(c.protectedInt);
Dalam kes ini, akses dibuat melalui contoh subkelas (C), jadi ahli yang dilindungi kelihatan.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Mengakses Ahli Dilindungi dalam Subkelas Java Daripada Pakej Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!