Rumah >Java >javaTutorial >Mengapa Kelas Dalam Java Tidak Boleh Mempunyai Medan Statik?
Mengapa Java Melarang Medan Statik dalam Kelas Dalam
Java melarang medan dan kaedah statik dalam kelas dalam kerana kelas dalam ini dianggap "contoh" kelas dalam, bermakna mereka secara semula jadi terikat pada contoh lampiran kelas.
Memahami Kelas Dalaman Instance
Kelas dalaman Instance adalah serupa dengan atribut instance bagi kelas yang disertakan. Mereka dicipta apabila contoh kelas lampiran dibuat dan bergantung pada contoh itu untuk kewujudannya. Oleh itu, tidak masuk akal untuk membenarkan ciri statik dalam kelas dalaman ini.
Atribut dan Kebergantungan Statik
Unsur statik, seperti medan dan kaedah statik, direka bentuk untuk bebas daripada sebarang contoh objek tertentu. Jika medan statik hendak ditakrifkan dalam kelas dalam contoh, ia akan memperkenalkan kebergantungan pada contoh yang dilampirkan, yang bercanggah dengan tujuan atribut statik.
Contoh: Atribut Balas
Pertimbangkan contoh di mana matlamatnya adalah untuk mengira bilangan objek InnerClass yang dibuat. Jika kita mentakrifkan medan pembilang statik dalam InnerClass seperti yang dilihat di bawah:
class OuterClass { class InnerClass { static int count; // Compile error } }
Ini akan membawa kepada kekeliruan kerana tidak jelas kiraan tika yang medan ini dirujuk. Apabila berbilang kejadian OuterClass dicipta, masing-masing dengan InnerClass sendiri, akan wujud kekaburan dalam menentukan kiraan agregat.
Kelas Dalaman Statik
Java membenarkan statik , atau kelas dalaman "bersarang", yang diisytiharkan sebagai berikut:
class OuterClass { static class InnerClass { static int count = 0; // Valid static field } }
Kelas dalaman statik adalah bebas daripada objek yang disertakan dan boleh mempunyai medan dan kaedah statik. Walau bagaimanapun, mereka masih berkait rapat dengan kelas yang disertakan dan hanya boleh mengakses ahli statik kelas yang disertakan.
Atas ialah kandungan terperinci Mengapa Kelas Dalam Java Tidak Boleh Mempunyai Medan Statik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!