Memahami Ketidakupayaan Mengisytiharkan Kelas sebagai Statik dalam Java
Sementara Java membenarkan kelas diisytiharkan dengan pelbagai pengubah akses (cth., awam, peribadi), mengisytiharkan kelas sebagai statik adalah tidak dibenarkan. Sekatan ini berpunca daripada sifat kelas dan hubungannya dengan kejadian.
Kelas dan Statik Bersarang
Di Java, hanya kelas bersarang boleh diisytiharkan sebagai statik. Kelas bersarang statik dikaitkan dengan kelas luar dan boleh diakses tanpa contoh yang terakhir. Ini membenarkan penggunaan semula kod dan organisasi dalam struktur kelas yang lebih besar.
Contoh Kelas Bersarang Statik
Pertimbangkan contoh berikut:
<code class="java">class OuterClass { public static class StaticNestedClass { } }</code>
Dalam contoh ini, StaticNestedClass ialah kelas bersarang statik dalam OuterClass. Ia boleh diakses dan digunakan secara langsung, tanpa memerlukan contoh OuterClass.
Had Kelas Dalam
Tidak seperti kelas bersarang statik, kelas dalam tidak diisytiharkan statik dan memerlukan contoh kelas luar yang akan dibuat dan diakses. Had ini wujud kerana kelas dalam mempunyai akses kepada pembolehubah instance dan kaedah kelas luar, yang tidak mungkin berlaku jika ia diisytiharkan statik.
Sampel Kod untuk Menggambarkan Had
Kod berikut menyerlahkan perbezaan antara kelas bersarang statik dan kelas dalam:
<code class="java">class OuterClass { public static class StaticNestedClass { } public class InnerClass { } public InnerClass getAnInnerClass() { return new InnerClass(); } } class OtherClass { private OuterClass.StaticNestedClass staticNestedClass = new OuterClass.StaticNestedClass(); private OuterClass outerclass = new OuterClass(); private OuterClass.InnerClass innerClass2 = outerclass.getAnInnerClass(); private OuterClass.InnerClass innerClass3 = outerclass.new InnerClass(); }</code>
Dalam contoh ini, staticNestedClass boleh diakses terus, manakala innerClass2 dan innerClass3 memerlukan contoh OuterClass untuk dibuat sebelum ini. mereka boleh digunakan.
Sumber:
Atas ialah kandungan terperinci Mengapa Kami Tidak Boleh Mengisytiharkan Kelas sebagai Statik di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!