Rumah > Java > javaTutorial > Mengapa Medan Statik Dilarang dalam Kelas Dalaman Java?

Mengapa Medan Statik Dilarang dalam Kelas Dalaman Java?

Mary-Kate Olsen
Lepaskan: 2024-12-17 12:05:25
asal
415 orang telah melayarinya

Why are Static Fields Prohibited in Java Inner Classes?

Medan Statik Dilarang dalam Kelas Dalam: Rasional

Java melarang pengisytiharan medan dan kaedah statik dalam kelas dalam (atau kelas dalaman biasa) disebabkan sifat mereka yang bergantung kepada contoh.

Kelas dalaman, tidak seperti kelas bersarang statik, terikat dengan contoh kelas lampiran mereka. Ini bermakna bahawa setiap tika kelas dalam mempunyai perkaitan unik dengan contoh khusus kelas tertutup. Akibatnya, membenarkan medan statik dalam kelas dalaman akan mewujudkan kesamaran dari segi contoh medan statik itu dimiliki.

Pertimbangkan contoh berikut:

class OuterClass {
  class InnerClass {
    static int i = 100; // compile error
  }
}
Salin selepas log masuk

Jika medan statik dibenarkan masuk kelas dalam, tidak akan ada cara yang jelas untuk menentukan contoh OuterClass medan statik i milik. Kekaburan ini boleh membawa kepada ralat masa jalan dan gelagat tidak konsisten.

Selain itu, membenarkan medan statik dalam kelas dalaman akan bercanggah dengan prinsip pergantungan berasaskan contoh. Memandangkan kelas dalam bergantung pada kejadian kelas yang disertakan, tidak masuk akal untuk mereka mempunyai ciri statik, yang direka bentuk untuk beroperasi secara bebas daripada sebarang tika.

Ringkasnya, Java melarang medan dan kaedah statik dalam kelas dalaman untuk mengekalkan:

  • Kejelasan dan konsistensi: Cegah kekaburan mengenai contoh medan statik yang dimiliki.
  • Pematuhan kepada prinsip reka bentuk: Kekalkan sifat kelas dalaman yang bergantung kepada contoh dan elakkan percanggahan dengan ciri statik.

Atas ialah kandungan terperinci Mengapa Medan Statik Dilarang dalam Kelas Dalaman 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