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.
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.
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()
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.
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.
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
Kelas Java BufferedInputStream Dalam tutorial ini, kita akan belajar tentang Java BufferedInputStream dan metodenya dengan bantuan contoh. BufferedInputStream kelas java.io package digunakan dengan aliran input lain untuk membaca data (dalam byte) dengan lebih efisien. Ini memperluas InputStream k
Kelas Java PrintStream Dalam tutorial ini, kita akan belajar tentang kelas Java PrintStream dan metode print() dan printf() dengan bantuan contoh. PrintStream kelas java.io package dapat digunakan untuk menulis data keluaran dalam bentuk (teks) yang dapat dibaca secara umum alih-alih byte. Ini mem
Kelas Pembaca Java Dalam tutorial ini, kita akan belajar tentang Java Reader, subclass-nya dan metodenya dengan bantuan sebuah contoh. Reader kelas java.io package adalah superclass abstrak yang mewakili aliran karakter. Sejak Reader adalah kelas abstrak, itu tidak berguna dengan sendirinya. Namun
Kelas Penulis Java Dalam tutorial ini, kita akan belajar tentang Java Writer, subclass-nya dan metodenya dengan bantuan sebuah contoh. Writer kelas java.io package adalah superclass abstrak yang mewakili aliran karakter. Sejak Writer adalah kelas abstrak, itu tidak berguna dengan sendirinya. Namun