Java ichki sinflar


ULASHISH

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)

O‘zingiz sinab ko‘ring »


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();
              ^

O‘zingiz sinab ko‘ring »



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

O‘zingiz sinab ko‘ring »

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

O‘zingiz sinab ko‘ring »




W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!