1. Kelas dalam
Anda baru saja mengetahui bahwa ada variabel statis dan metode statis. Ternyata ada juga kelas statis. Tapi kami akan mendekati topik ini dari jauh.
Di Java, Anda sepenuhnya diizinkan untuk mendeklarasikan kelas di dalam kelas. Dan bahkan kelas di dalam kelas yang ada di dalam kelas di dalam kelas. Semuanya terlihat sangat sederhana:
class OuterClass
{
variables of the class
methods of the class
class NestedClass
{
variables of the class
methods of the class
}
}
Kami hanya mendeklarasikan satu kelas di dalam yang lain. Sesimpel itu.
Contoh:
public class Solution
{
static ArrayList<Point> points = new ArrayList<Point>();
public static void main(String[] args)
{
Point point = new Point();
point.x = 100;
point.y = 200;
points.add(point);
}
static class Point
{
int x;
int y;
}
}
Kelas bersarang bisa statis atau non-statis. Kelas bersarang statis disebut kelas bersarang statis . Kelas bersarang non-statis disebut kelas dalam ( inner class ).
2. Kelas statis
Kelas bersarang statis dapat digunakan di luar kelas luarnya. Jika kelas tersebut memiliki pengubah akses publik, maka kelas tersebut dapat digunakan di mana saja dalam program. Kelas seperti itu hampir tidak dapat dibedakan dari kelas biasa mana pun. Tetapi ada beberapa perbedaan.
Nama kelas
Jika Anda ingin merujuk ke kelas bersarang statis dari tempat lain selain kelas luarnya, Anda perlu menentukan nama kelas, yang terdiri dari nama kelas luar dan nama kelas bersarang. Inilah tampilan umum dari nama ini:
OuterClass.InnerClass
Contoh:
Kelas luar | Kelas bersarang | Nama lengkap kelas bersarang |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Jika kelas bersarang memiliki kelas bersarangnya sendiri, namanya hanya digabungkan menggunakan titik.
Contoh tipikal kelas bersarang di JDK adalah Entry
kelas di dalam Map
kelas. Jika Anda ingin mendapatkan kumpulan pasangan nilai kunci yang disimpan dalam HashMap
objek, gunakan entrySet()
metode, yang mengembalikan a .Set<Map.Entry>
Perhatikan bahwa adalah contoh kelas luar dan kelas bersarang.Map.Entry
Membuat objek
Sangat mudah untuk membuat objek dari kelas bersarang statis. Begini tampilannya:
OuterClass.NestedClass name = new OuterClass.NestedClass();
Semuanya sama dengan kelas biasa, tetapi namanya terdiri dari dua bagian.
Memanggil metode statis
Jika kelas statis memiliki metode statis, Anda dapat mengaksesnya dengan cara yang sama seperti metode statis kelas biasa (namun nama kelas akan terdiri dari dua bagian).
OuterClass.NestedClass.staticMethod();
Mengakses variabel statis
Mengakses variabel statis publik dari kelas bersarang juga mudah:
OuterParent.NestedClass.nameOfStaticVariable
3. Fitur kelas statis
Kelas bersarang statis memiliki alasan paling sedikit untuk disebut statis. Mereka berperilaku seperti kelas reguler . Tidak ada batasan untuk mengaksesnya dari metode non-statis.
Jika Anda bekerja dengan kelas bersarang statis di dalam kelas luarnya, Anda tidak akan melihat perbedaan apa pun dari kelas paling biasa (tidak bersarang dan tidak statis).
Contoh:
Kelas Titik bersarang statis | Kelas Poin Biasa. |
---|---|
|
|
Jika Anda mengambil beberapa kelas bersarang statis dan memindahkannya dari kelas luarnya, satu-satunya hal yang akan berubah adalah bahwa kelas baru tidak lagi dapat mengakses private static
variabel dan metode dari kelas luar sebelumnya.
Contoh:
Kelas Titik bersarang statis | Kelas Poin Biasa. |
---|---|
|
|
Metode di kelas main
biasa tidak dapat mengakses variabel kelas !Point
private static
points
Solution
Ini adalah perbedaan utama antara kelas bersarang statis dan kelas biasa. Metode kelas bersarang statis dapat mengakses semua variabel statis dan metode kelas luarnya, bahkan jika dideklarasikan private
.
Dan jika Anda memikirkannya, mengapa itu mengejutkan? Pengubah private
secara eksplisit mengatakan bahwa variabel dan metode yang ditandai oleh pengubah ini hanya dapat diakses dari dalam kelasnya. Apakah kelas bersarang statis di dalam kelas luarnya? Ya, jadi tidak masalah! Akses sebanyak yang Anda mau.
GO TO FULL VERSION