1. kelas batin
Sampeyan bubar sinau manawa ana variabel statis lan metode statis. Pranyata ana uga kelas statis. Nanging kita bakal nyedhaki topik iki saka kadohan.
Ing Jawa, sampeyan kabeh diijini ngumumake kelas ing kelas. Lan malah kelas ing kelas sing ana ing kelas ing kelas. Kabeh katon prasaja banget:
class OuterClass
{
variables of the class
methods of the class
class NestedClass
{
variables of the class
methods of the class
}
}
Kita mung ngumumake kelas siji ing kelas liyane. Sesederhana kuwi.
Tuladha:
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 nested bisa statis utawa non-statis. Kelas bersarang statis mung diarani kelas bersarang statis . Kelas bersarang non-statis diarani kelas batin ( kelas batin ).
2. Kelas statis
Kelas nested statis bisa digunakake ing njaba kelas njaba. Yen kelas kasebut nduweni modifier akses umum, mula bisa digunakake ing ngendi wae ing program kasebut. Kelas kasebut meh ora bisa dibedakake karo kelas biasa. Nanging ana sawetara beda.
Jeneng kelas
Yen sampeyan pengin ngrujuk menyang kelas nested statis saka nang endi wae liyane saka kelas njaba, sampeyan kudu nemtokake jeneng kelas, kang kasusun saka jeneng kelas njaba lan jeneng kelas nested. Mangkene tampilan umum jeneng iki:
OuterClass.InnerClass
Tuladha:
kelas njaba | Kelas nested | Jeneng lengkap kelas nested |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Yen kelas nested duwe kelas nested dhewe, jenenge mung digabung nganggo titik.
Conto khas kelas nested ing JDK yaiku Entry
kelas ing njero Map
kelas. Yen sampeyan pengin entuk set pasangan kunci-nilai sing disimpen ing obyek HashMap
, banjur gunakake entrySet()
metode kasebut, sing ngasilake .Set<Map.Entry>
Elinga yen iku conto saka kelas njaba lan kelas nested.Map.Entry
Nggawe obyek
Iku gampang banget kanggo nggawe obyek saka kelas nested statis. Mangkene tampilane:
OuterClass.NestedClass name = new OuterClass.NestedClass();
Iku kabeh padha karo kelas biasa, nanging jeneng kasusun saka rong bagéan.
Nelpon cara statis
Yen kelas statis duwe cara statis, sampeyan bisa ngakses kanthi cara sing padha karo cara statis kelas biasa (nanging jeneng kelas bakal kalebu rong bagean).
OuterClass.NestedClass.staticMethod();
Ngakses variabel statis
Ngakses variabel statis umum saka kelas bersarang uga gampang:
OuterParent.NestedClass.nameOfStaticVariable
3. Fitur saka kelas statis
Kelas bersarang statis duwe alasan paling sithik kanggo diarani statis. Padha tumindak kaya kelas biasa . Ora ana watesan kanggo ngakses saka cara non-statis.
Yen sampeyan lagi nggarap kelas nested statis nang kelas njaba, sampeyan ora bakal sok dong mirsani prabédan saka kelas paling biasa (ora nested lan ora statis).
Tuladha:
Statis nested Point kelas | Kelas Point Biasa. |
---|---|
|
|
Yen sampeyan njupuk sawetara kelas nested statis lan pindhah metu saka kelas njaba sawijining, mung bab sing bakal ngganti iku kelas anyar ora maneh bisa ngakses private static
variabel lan cara saka mantan kelas njaba.
Tuladha:
Statis nested Point kelas | Kelas Point Biasa. |
---|---|
|
|
Cara ing kelas main
biasa ora bisa ngakses variabel kelas !Point
private static
points
Solution
Iki prabédan utama antarane kelas nested statis lan kelas biasa. Metode kelas nested statis bisa ngakses kabeh variabel statis lan metode kelas njaba, sanajan diumumake private
.
Lan yen sampeyan mikir babagan iki, kenapa kudu kaget? Modifier kasebut private
kanthi tegas nyatakake yen variabel lan metode sing ditandhani dening modifier iki mung bisa diakses saka kelase. Apa kelas nested statis ing njero kelas njaba? Ya, dadi ora masalah! Ngakses wong akeh sing pengin.