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

Mengapa Medan Statik Dilarang dalam Kelas Dalaman Java?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-17 12:05:25410semak imbas

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
  }
}

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!

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