Java ichki sinflar
Java ichki sinflar
Java tilida sinflarni ichma-ich joylashtirish (sinf ichida sinf) ham mumkin. Ichma-ich sinflarning maqsadi — bir-biriga tegishli sinflarni guruhlash; bu kodingizni o‘qish va qo‘llab-quvvatlashni osonlashtiradi.
Ichki sinfga murojaat qilish uchun avval tashqi sinf obyektini, so‘ng ichki sinf obyektini yarating:
Misol
class OuterClass {
int x = 10;
class InnerClass {
int y = 5;
}
}
public class Main {
public static void main(String[] args) {
OuterClass myOuter = new OuterClass();
OuterClass.InnerClass myInner = myOuter.new InnerClass();
System.out.println(myInner.y + myOuter.x);
}
}
// Outputs 15 (5 + 10)
Private ichki sinf
"Oddiy" sinfdan farqli ravishda ichki sinf private yoki protected bo‘lishi mumkin. Agar tashqi obyektlar ichki sinfga murojaat qilishini istamasangiz, sinfni private deb e’lon qiling:
Misol
class OuterClass {
int x = 10;
private class InnerClass {
int y = 5;
}
}
public class Main {
public static void main(String[] args) {
OuterClass myOuter = new OuterClass();
OuterClass.InnerClass myInner = myOuter.new InnerClass();
System.out.println(myInner.y + myOuter.x);
}
}
Agar private ichki sinfga tashqi sinfdan murojaat qilishga urinsangiz, xato yuz beradi:
Main.java:13: error: OuterClass.InnerClass has private access in OuterClass
OuterClass.InnerClass myInner = myOuter.new InnerClass();
^
Static ichki sinf
Ichki sinf static ham bo‘lishi mumkin, bu unga tashqi sinf obyektini yaratmasdan murojaat qilish mumkinligini anglatadi:
Misol
class OuterClass {
int x = 10;
static class InnerClass {
int y = 5;
}
}
public class Main {
public static void main(String[] args) {
OuterClass.InnerClass myInner = new OuterClass.InnerClass();
System.out.println(myInner.y);
}
}
// Outputs 5
Eslatma: static atribut va metodlar kabi, static ichki sinf ham tashqi sinf a’zolariga murojaat qila olmaydi.
Ichki sinfdan tashqi sinfga murojaat qilish
Ichki sinflarning afzalliklaridan biri — ular tashqi sinfning atribut va metodlariga murojaat qila oladi:
Misol
class OuterClass {
int x = 10;
class InnerClass {
public int myInnerMethod() {
return x;
}
}
}
public class Main {
public static void main(String[] args) {
OuterClass myOuter = new OuterClass();
OuterClass.InnerClass myInner = myOuter.new InnerClass();
System.out.println(myInner.myInnerMethod());
}
}
// Outputs 10
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
