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

Kelas Statis Bersarang Java

Kelas Statis Bersarang Java

Dalam tutorial ini, Anda akan belajar tentang kelas statis bersarang dengan bantuan contoh. Anda juga akan belajar tentang perbedaan kelas statis dengan kelas dalam.

Seperti yang dipelajari dalam tutorial sebelumnya, kita dapat memiliki kelas di dalam kelas lain di Java. Kelas seperti itu dikenal sebagai kelas bersarang. Di Java, kelas bersarang terdiri dari dua jenis:

Kita sudah membahas kelas dalam di tutorial sebelumnya. Kunjungi Java Nested Class jika Anda ingin mempelajari kelas dalam.

Dalam tutorial ini, kita akan belajar tentang kelas statis bersarang.


Kelas Statis Bersarang Java

Kami menggunakan kata kunci static untuk membuat kelas bersarang kita menjadi statis.

Catatan: Di Java, hanya kelas bersarang yang diizinkan menjadi statis.

Seperti kelas reguler, kelas bersarang statis dapat mencakup bidang dan metode statis dan non-statis. Misalnya,

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

Kelas bersarang statis dikaitkan dengan kelas luar.

Untuk mengakses kelas bersarang statis, kita tidak memerlukan objek dari kelas luar.


Contoh:Kelas Bersarang Statis

class Animal {

// inner class
   class Reptile {
      public void displayInfo() {
        System.out.println("I am a reptile.");
      }
   }

// static class
   static class Mammal {
      public void displayInfo() {
        System.out.println("I am a mammal.");
      }
   }
}

class Main {
   public static void main(String[] args) {
      // object creation of the outer class
      Animal animal = new Animal();

      // object creation of the non-static class
      Animal.Reptile reptile = animal.new Reptile();
      reptile.displayInfo();

      // object creation of the static nested class
      Animal.Mammal mammal = new Animal.Mammal();
      mammal.displayInfo();

   }
}

Keluaran

I am a reptile.
I am a mammal.

Dalam program di atas, kita memiliki dua kelas bersarang Mamalia dan Reptil di dalam kelas Hewan .

Untuk membuat objek dari kelas non-statis Reptil, kami telah menggunakan

Animal.Reptile reptile = animal.new Reptile()

Untuk membuat objek dari kelas statis Mamalia , kami telah menggunakan

Animal.Mammal mammal = new Animal.Mammal()

Mengakses Anggota Kelas Luar

Di Jawa, kelas bersarang statis dikaitkan dengan kelas luar. Inilah sebabnya mengapa kelas bersarang statis hanya dapat mengakses anggota kelas (bidang dan metode statis) dari kelas luar.

Mari kita lihat apa yang akan terjadi jika kita mencoba mengakses bidang dan metode non-statis dari kelas luar.

Contoh:Mengakses anggota Non-statis

class Animal {
  static class Mammal {
   public void displayInfo() {
     System.out.println("I am a mammal.");
   }
 }

 class Reptile {
   public void displayInfo() {
     System.out.println("I am a reptile.");
   }
 }

 public void eat() {
   System.out.println("I eat food.");
 }
}

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();
 }
}

Keluaran

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

Dalam contoh di atas, kami telah membuat metode non-statis eat() di dalam kelas Hewan .

Sekarang, jika kita mencoba mengakses eat() menggunakan objek mamalia , compiler menunjukkan kesalahan.

Itu karena mamalia adalah objek dari kelas statis dan kami tidak dapat mengakses metode non-statis dari kelas statis.


Kelas Tingkat Atas Statis

Seperti disebutkan di atas, hanya kelas bersarang yang bisa statis. Kami tidak dapat memiliki kelas tingkat atas statis.

Mari kita lihat apa yang akan terjadi jika kita mencoba membuat kelas tingkat atas menjadi statis.

static class Animal {
 public static void displayInfo() {
   System.out.println("I am an animal");
 }
}

class Main {
 public static void main(String[] args) {
   Animal.displayInfo();
 }
}

Keluaran

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

Pada contoh di atas, kami telah mencoba membuat kelas statis Hewan . Karena Java tidak mengizinkan kelas tingkat atas statis, kami akan mendapatkan kesalahan.


java

  1. C# Kata Kunci statis
  2. C# Kelas Bersarang
  3. Kata kunci terakhir Java
  4. Instance Java dari Operator
  5. Java Nested dan Kelas Dalam
  6. Kelas Anonim Java
  7. Kelas Tunggal Jawa
  8. Refleksi Jawa
  9. Kelas Java ObjectOutputStream
  10. Java Generik