Kelas Statis Bertingkat Java

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

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

  • Kelas non-statis bersarang (kelas dalam)
  • Kelas statis bersarang.

Kami telah membahas kelas-kelas dalam di tutorial sebelumnya. Kunjungi Java Nested Class jika Anda ingin mempelajari tentang inner class.

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

Kelas Statis Bertingkat Java

Kami menggunakan kata kunci staticuntuk membuat kelas bersarang kami statis.

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

Seperti kelas biasa, kelas bertingkat statis dapat menyertakan bidang dan metode statis dan non-statis. Sebagai contoh,

 Class Animal ( static class Mammal ( // static and non-static members of Mammal ) // members of Animal ) 

Kelas bertingkat statis dikaitkan dengan kelas luar.

Untuk mengakses kelas bertingkat statis, kita tidak membutuhkan 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

Saya adalah seekor reptil. Saya mamalia

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

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

 Animal.Reptile reptile = animal.new Reptile() 

Untuk membuat objek Mammal kelas statis, kami telah menggunakan

 Animal.Mammal mammal = new Animal.Mammal() 

Mengakses Anggota Kelas Luar

Di Java, kelas bertingkat statis dikaitkan dengan kelas luar. Inilah sebabnya mengapa kelas bertingkat 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 non-statis dan metode 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: tidak dapat menemukan simbol mamalia.eat (); simbol: method eat () location: variabel mamalia tipe Mammal 1 error compiler exit status 1

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

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

Itu karena mamalia adalah objek dari kelas statis dan kita 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 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: pengubah statis tidak diizinkan di sini kelas statis Hewan (1 status keluar penyusun kesalahan 1 

Dalam contoh di atas, kami telah mencoba membuat Animal kelas statis. Karena Java tidak mengizinkan kelas tingkat atas statis, kita akan mendapatkan kesalahan.

Artikel yang menarik...