Rumah > Java > javaTutorial > teks badan

Mengapa Kami Tidak Boleh Mengisytiharkan Kelas sebagai Statik di Jawa?

Patricia Arquette
Lepaskan: 2024-10-30 10:30:26
asal
553 orang telah melayarinya

Why Can't We Declare Classes as Static in Java?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

Dalam contoh ini, staticNestedClass boleh diakses terus, manakala innerClass2 dan innerClass3 memerlukan contoh OuterClass untuk dibuat sebelum ini. mereka boleh digunakan.

Sumber:

  • Tutorial Oracle tentang kelas bersarang
  • Java: Kelas dalaman statik vs bukan statik
  • Kelas dalam Java dan kelas bersarang statik

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!