Rumah >Java >javaTutorial >Mengapa Saya Tidak Boleh Mengakses Ahli Dilindungi dalam Subkelas Java Daripada Pakej Lain?

Mengapa Saya Tidak Boleh Mengakses Ahli Dilindungi dalam Subkelas Java Daripada Pakej Lain?

Linda Hamilton
Linda Hamiltonasal
2024-12-10 04:47:12852semak imbas

Why Can't I Access a Protected Member in a Java Subclass From Another Package?

Memahami Java's protected Modifier

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!

Kenyataan:
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