Sobes.tech
Junior

რა არის შიდა კლასი?

sobes.tech AI

პასუხი AI-სგან

შიდა კლასები — ეს სხვა კლასში გამოყოფილი კლასი. ისინი იყოფა ორ ძირითად ტიპად: სტატიკური შიდა კლასები (სტატიკური წევრები კლასი) და შიდა კლასები (нестატიკური წევრები კლასი).

სტატიკური შიდა კლასები:

  • დაკავშირებულია გარე კლასთან, არა მის ინстанციასთან.
  • შეუძლიათ მიმართონ მხოლოდ გარე კლასის სტატიკურ წევრებს.
  • შეიძლება შეიქმნას გარე კლასის ინстанციის გარეშე.

შიდა კლასები:

  • დაკავშირებულია გარე კლასის ინстанციასთან.
  • შეუძლიათ მიმართონ ყველა წევრს გარე კლასში (შეიცვლება private-ს ჩათვლით).
  • საჭიროებს გარე კლასის ინстанციას მათი შექმნისთვის.

გამოყენების მაგალითები:

  • ჯგუფավորում: ლოგიკურად დაკავშირებული კლასები შეიძლება გაერთიანდეს კოდის უკეთესად წაკითხვასა და ორგანიზაციისთვის.
  • ინკაფსულაცია: შიდა კლასებს აქვთ წვდომა გარე კლასის პირად წევრებზე, რაც საშუალებას აძლევს განახორციელოს დეტალების ინკაფსულაცია.
  • საგარეჯო მოსმენის (Java) მიმღებები: ხშირად გამოიყენება ანონიმური შიდა კლასების შესაქმნელად.
  • დამხმარე კლასები: მცირე ზომის კლასები, რომლებიც გამოიყენება მხოლოდ გარე კლასის მიერ.
// სტატიკური შიდა კლასის მაგალითი
class OuterClass {
    static int outerStaticField = 1;
    int outerInstanceField = 2;

    static class StaticNestedClass {
        void display() {
            System.out.println("გარე სტატიკური ველი: " + outerStaticField);
            // პირდაპირ არ შეიძლება მიმართოს outerInstanceField-ს
        }
    }
}

// შიდა კლასის მაგალითი
class AnotherOuterClass {
    int outerField = 10;

    class InnerClass {
        void display() {
            System.out.println("გარე ველი: " + outerField); // მიმართვა გარე კლასის ველზე
        }
    }
}

შედარებითი სია:

მახასიათებელი სტატიკური შიდა კლასი შიდა კლასი
კავშირი გარე კლასთან გარე კლასის ინстанციასთან
მიმართვა გარე წევრებზე მხოლოდ სტატიკურია ყველა წევრი (შეიცვლება private)
საჭიროებს ინстанციას არა კი
შეიძლება შეიცავდეს სტატიკურ წევრებს კი არა (გარდა კონსტანტების)