Rumah >Java >javaTutorial >Mengapa Kelas Dalam Java Tidak Boleh Mempunyai Medan Statik?

Mengapa Kelas Dalam Java Tidak Boleh Mempunyai Medan Statik?

Linda Hamilton
Linda Hamiltonasal
2024-12-01 15:34:16402semak imbas

Why Can't Java Inner Classes Have Static Fields?

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!

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