Rumah > Java > javaTutorial > Mengapa Medan dan Kaedah Statik Tidak Dibenarkan dalam Kelas Dalaman Contoh di Jawa?

Mengapa Medan dan Kaedah Statik Tidak Dibenarkan dalam Kelas Dalaman Contoh di Jawa?

DDD
Lepaskan: 2024-11-30 05:54:18
asal
656 orang telah melayarinya

Why are Static Fields and Methods Not Allowed in Instance Inner Classes in Java?

Statik Bidang dan Kaedah dalam Kelas Dalam: Sekatan dan Sebab

Kelas dalaman, juga dikenali sebagai kelas bersarang, adalah kelas yang diisytiharkan dalam kelas lain. Mereka diklasifikasikan sebagai sama ada kelas dalam contoh atau kelas dalam statik.

Kelas Dalaman Contoh

Kelas dalam contoh, seperti namanya, dikaitkan dengan kejadian yang disertakan kelas. Mereka mempunyai akses kepada pembolehubah dan kaedah contoh kelas yang disertakan melalui kata kunci ini. Walau bagaimanapun, medan dan kaedah statik tidak dibenarkan dalam contoh kelas dalam.

Kelas Dalaman Statik

Kelas dalam statik, sebaliknya, tidak mempunyai akses kepada melampirkan pembolehubah atau kaedah contoh kelas. Mereka berkelakuan seperti kelas biasa yang bersarang dalam kelas yang disertakan dan boleh mengisytiharkan medan dan kaedah statik.

Sekatan pada Medan dan Kaedah Statik dalam Kelas Dalam

Java melarang medan statik dan kaedah contohnya kelas dalaman kerana:

  • Pergantungan pada Melampirkan Contoh Kelas: Memandangkan kelas dalam contoh diikat dengan contoh tertentu kelas melampirkan, kewujudan medan atau kaedah statiknya akan bergantung pada kehadiran daripada contoh kelas yang disertakan. Ini akan mewujudkan ketidakkonsistenan dan menjadikannya mustahil untuk berkongsi nilai ini merentas berbilang kejadian kelas dalam.
  • Instance vs. Skop Peringkat Kelas: Medan dan kaedah statik tergolong dalam peringkat kelas, bukan tahap contoh. Membenarkan mereka dalam kelas dalaman akan mengaburkan perbezaan antara ahli khusus contoh dan seluruh kelas. Perkaitan kelas dalam dengan kejadian tertentu akan mengganggu pemisahan kebimbangan antara gelagat seluruh kelas dan khusus contoh.
  • Keselamatan Benang: Medan dan kaedah statik boleh diakses daripada berbilang benang, tetapi kelas dalam contoh tergolong dalam contoh tertentu, yang mungkin tidak selamat untuk benang. Membenarkan medan dan kaedah statik akan memperkenalkan isu keselamatan benang yang berpotensi jika ia diakses secara serentak daripada berbilang rangkaian.

Pertimbangan Pelaksanaan

Secara teknikal, sekatan pada medan statik dan kaedah dalam kelas dalaman dikuatkuasakan oleh Mesin Maya Java (JVM). JVM memberikan pengecam masa jalan kepada setiap contoh kelas dalaman, menjadikannya unik bagi setiap contoh kelas yang disertakan. Akibatnya, pengkompil membenderakan sebarang percubaan untuk mengisytiharkan medan atau kaedah statik dalam kelas dalaman, kerana JVM tidak dapat membezakan antara ahli peringkat kelas dan peringkat contoh dalam kelas dalaman.

Ringkasnya, Java melarang medan dan kaedah statik dalam kelas dalam contoh untuk mengekalkan perbezaan yang jelas antara kelakuan seluruh kelas dan khusus contoh, memastikan keselamatan benang dan selaras dengan prinsip reka bentuk bahasa yang memisahkan ahli berkaitan dan statik. .

Atas ialah kandungan terperinci Mengapa Medan dan Kaedah Statik Tidak Dibenarkan dalam Kelas Dalaman Contoh di Jawa?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan