Middle
Java'da ichki (nested) va ichki (inner) sinflar o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
-
Nested sinflar (Nested classes): Tashqi sinfning statik a'zolari. Ular tashqi sinfning statik bo'lmagan a'zolariga (maydonlar va metodlar) to'g'ridan-to'g'ri kirish imkoniga ega emaslar, faqat tashqi sinfning nusxasi orqali.
statickalit so'zi bilan e'lon qilinadi. -
Ichki sinflar (Inner classes): Tashqi sinfning statik bo'lmagan a'zolari. Ular tashqi sinfning barcha a'zolariga (statik va statik bo'lmagan) to'liq kirish huquqiga ega, jumladan maxfiylar ham. Ichki sinf nusxasini yaratish uchun tashqi sinf nusxasi kerak.
statickalit so'zidan foydalanmaydi.
Misol:
// Tashqi sinf
class Outer {
private int outerField = 10;
private static int staticOuterField = 20;
// Statik ichki sinf
static class StaticNestedClass {
void display() {
// Faqat tashqi sinfning statik a'zolariga kirish
System.out.println("Statik ichki: " + staticOuterField);
// outerField ga to'g'ridan-to'g'ri kirish mumkin emas
// System.out.println(outerField); // Kompilyatsiya xatosi
}
}
// Statik bo'lmagan ichki sinf
class InnerClass {
void display() {
// Tashqi sinfning barcha a'zolariga kirish
System.out.println("Ichki: " + outerField);
System.out.println("Ichki (statik): " + staticOuterField);
}
}
}
// Foydalanish
public class Main {
public static void main(String[] args) {
// Statik ichki sinf nusxasini yaratish
Outer.StaticNestedClass staticNested = new Outer.StaticNestedClass();
staticNested.display();
// Ichki sinf nusxasini yaratish uchun tashqi sinf nusxasi kerak
Outer outer = new Outer();
Outer.InnerClass inner = outer.new InnerClass();
inner.display();
}
}
| Xususiyat | Nested sinf (Nested Class) | Inner sinf (Inner Class) |
|---|---|---|
| Kalit so'z | static |
Yo'q |
| Tashqi sinf a'zolariga kirish | Faqat statiklar | Barchasi |
| Tashqi sinf nusxasi bo'lmasdan inner sinf nusxasi yaratish mumkinmi? | Yo'q | Ha |
| Tashqi sinf nusxasi bilan bog'liqlik | Yo'q | Ha |