Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Memahami Kelas Bersarang Statis Java: Penggunaan, Perbedaan, dan Contoh

Kelas Bersarang Statis Java

Temukan bagaimana kelas bersarang statis Java bekerja, bagaimana mereka berbeda dari inner class, dan kapan menggunakannya dengan contoh kode praktis.

Di Java, sebuah kelas dapat didefinisikan di dalam kelas lain. Ini disebut nested classes dan datang dalam dua bentuk:

Sementara inner class telah dibahas dalam tutorial kami sebelumnya, artikel ini berfokus pada static nested classes.


Kelas Bersarang Statis Java

Untuk mendeklarasikan nested class sebagai static, cukup tambahkan kata kunci static:

class Animal { static class Mammal { // static and non-static members of Mammal } // members of Animal } 

Catatan: Hanya nested classes yang dapat dideklarasikan static; top-level classes tidak dapat.

Seperti kelas lainnya, static nested class dapat berisi anggota static dan instance.

Karena ia merupakan anggota static dari outer classnya, Anda dapat mengakses static nested class tanpa membuat instance outer class.


Contoh: Static Nested Class

class Animal { // inner class class Reptile { public void displayInfo() { System.out.println("Saya adalah seekor reptil."); } } // static nested class static class Mammal { public void displayInfo() { System.out.println("Saya adalah seekor mamalia."); } } } class Main { public static void main(String[] args) { // buat instance outer class Animal animal = new Animal(); // buat instance non-static inner class Animal.Reptile reptile = animal.new Reptile(); reptile.displayInfo(); // buat instance static nested class Animal.Mammal mammal = new Animal.Mammal(); mammal.displayInfo(); } } 

Output

Saya adalah seekor reptil. Saya adalah seekor mamalia. 

Pada kode di atas, Mammal adalah static nested class sementara Reptile adalah inner class.

Perhatikan sintaks instantiation yang berbeda:


Mengakses Anggota Outer Class

Karena static nested class terkait dengan outer classnya, ia hanya dapat mengakses anggota static outer class. Upaya untuk mereferensikan instance members akan menghasilkan kesalahan kompilasi.

Contoh: Mencoba Memanggil Metode Non-static

class Animal { static class Mammal { public void displayInfo() { System.out.println("Saya adalah seekor mamalia."); } } class Reptile { public void displayInfo() { System.out.println("Saya adalah seekor reptil."); } } public void eat() { System.out.println("Saya makan makanan."); } } class Main { public static void main(String[] args) { Animal animal = new Animal(); Animal.Reptile reptile = animal.new Reptile(); reptile.displayInfo(); Animal.Mammal mammal = new Animal.Mammal(); mammal.displayInfo(); mammal.eat(); // ❌ Kesalahan waktu kompilasi } } 

Output

Main.java:28: error: cannot find symbol mammal.eat(); ^ symbol: method eat() location: variable mammal of type Mammal 1 error compiler exit status 1 

Kesalahan terjadi karena mammal adalah instance static nested class dan tidak dapat memanggil metode non-static eat() dari Animal.


Static Top-Level Class?

Java melarang static top-level classes. Hanya nested classes yang dapat dideklarasikan static. Kode berikut menunjukkan kesalahan kompiler:

static class Animal { public static void displayInfo() { System.out.println("Saya adalah seekor hewan"); } } class Main { public static void main(String[] args) { Animal.displayInfo(); } } 

Output

Main.java:1: error: modifier static not allowed here static class Animal { ^ 1 error compiler exit status 1 

Ini mengonfirmasi bahwa hanya nested classes yang dapat static.


java

  1. Kata Kunci Static C#: Menguasai Variabel, Metode, dan Kelas Statis
  2. Memahami Kelas Bersarang C#: Definisi, Penggunaan, dan Warisan
  3. Memahami Kata Kunci final Java: Variabel, Metode, dan Kelas
  4. Operator instanceof Java: Panduan Lengkap
  5. Menguasai Kelas Bersarang dan Kelas Dalam Java: Jenis, Contoh, dan Praktik Terbaik
  6. Menguasai Kelas Dalam Anonim Java: Definisi, Sintaks, dan Contoh Praktis
  7. Pola Singleton Java Dijelaskan: Cara Menerapkan dan Menggunakannya dengan Aman
  8. Menguasai Refleksi Java: Memeriksa Kelas, Metode, dan Field pada Waktu Eksekusi
  9. Menguasai Java ObjectOutputStream: Serialisasi, Metode, dan Contoh Praktis
  10. Menguasai Java Generics – Membangun Kode yang Dapat Digunakan Kembali dan Aman Tipe