Kelas Statik Bersarang Java

Dalam tutorial ini, anda akan belajar mengenai kelas statik bersarang dengan bantuan contoh. Anda juga akan mengetahui bagaimana kelas statik berbeza dengan kelas dalaman.

Seperti yang dipelajari dalam tutorial sebelumnya, kita dapat memiliki kelas di dalam kelas lain di Java. Kelas sedemikian dikenali sebagai kelas bersarang. Di Jawa, kelas bersarang terdiri daripada dua jenis:

  • Kelas tidak statik bersarang (Kelas dalaman)
  • Kelas statik bersarang.

Kami telah membincangkan kelas dalaman dalam tutorial sebelumnya. Lawati Java Nested Class jika anda ingin mengetahui tentang kelas dalaman.

Dalam tutorial ini, kita akan belajar mengenai kelas statik bersarang.

Kelas Statik Bersarang Java

Kami menggunakan kata kunci staticuntuk menjadikan kelas bersarang kami statik.

Catatan: Di Java, hanya kelas bersarang yang dibenarkan statis.

Seperti kelas biasa, kelas bersarang statik boleh merangkumi medan dan kaedah statik dan bukan statik. Sebagai contoh,

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

Kelas bersarang statik dikaitkan dengan kelas luar.

Untuk mengakses kelas bersarang statik, kami tidak memerlukan objek dari kelas luar.

Contoh: Kelas Bersarang Statik

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

Pengeluaran

Saya reptilia. Saya mamalia.

Dalam program di atas, kami mempunyai dua kelas bersarang Mamalia dan Reptil di dalam kelas Haiwan.

Untuk membuat objek Reptil kelas tidak statik, kami telah menggunakan

 Animal.Reptile reptile = animal.new Reptile() 

Untuk membuat objek Mammal kelas statik, kami telah menggunakan

 Animal.Mammal mammal = new Animal.Mammal() 

Mengakses Ahli Kelas Luar

Di Jawa, kelas bersarang statik dikaitkan dengan kelas luar. Inilah sebabnya mengapa kelas bersarang statik hanya dapat mengakses ahli kelas (medan dan kaedah statik) kelas luar.

Mari lihat apa yang akan berlaku sekiranya kita cuba mengakses bidang dan kaedah bukan statik dari kelas luar.

Contoh: Mengakses ahli yang tidak statik

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

Pengeluaran

Main.java:28: ralat: tidak dapat mencari simbol mamalia.eat (); simbol: kaedah makan () lokasi: mamalia berubah-ubah jenis Mamalia 1 kesalahan penyusun status keluar 1

Dalam contoh di atas, kami telah membuat kaedah tidak statik eat()di dalam kelas Animal.

Sekarang, jika kita cuba mengakses eat()menggunakan mamalia objek, penyusun menunjukkan kesalahan.

Ini kerana mamalia adalah objek kelas statik dan kita tidak dapat mengakses kaedah bukan statik dari kelas statik.

Kelas Aras Atas Statik

Seperti yang disebutkan di atas, hanya kelas bersarang yang boleh statik. Kami tidak boleh mempunyai kelas peringkat atas statik.

Mari lihat apa yang akan berlaku sekiranya kita berusaha menjadikan kelas atasan statik.

 static class Animal ( public static void displayInfo() ( System.out.println("I am an animal"); ) ) class Main ( public static void main(String() args) ( Animal.displayInfo(); ) ) 

Pengeluaran

 Main.java :: ralat: pengubah statik tidak dibenarkan di sini kelas statik Haiwan (1 ralat penyusun status keluar 1 

Dalam contoh di atas, kami telah mencuba membuat haiwan kelas statik. Oleh kerana Java tidak membenarkan kelas peringkat atas statik, kami akan mendapat ralat.

Artikel menarik...