Sobes.tech
Middle

შიდა კლასები რა არის და როგორ გამოიყენება პროგრამირებაში?

sobes.tech AI

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

შიდა კლასები — ეს არის კლასები, რომლებიც გამოცხადებულია სხვა კლასის შიგნით. ისინი საშუალებას აძლევენ ლოგიკურად ჯგუფურად მოათავსოთ კლასი, რომელიც გამოიყენება მხოლოდ ერთ ადგილას, ზრდიან ინკაფსულაციას და ამარტივებენ კოდის წაკითხვას.

შიდა კლასები იყოფა:

  • სტატიკური (Static Nested Classes): არ აქვს წვდომა გარეგანი კლასის ნესტატიკური წევრებზე. შეიძლება შექმნათ გარეგანი კლასის ინстанციის გარეშე.
  • ნესტატიკური (Inner Classes): აქვთ წვდომა ყველა გარეგანი კლასის წევრზე (შეიცვლება პირადი წევრებიც). ნესტატიკური შიდა კლასის ინстанციის შექმნა საჭიროებს გარეგანი კლასის ინстанციას.

გამოყენება:

  • განხილვის დამალვა: შიდა კლასი შეიძლება გამოიყენოს როგორც დამხმარე კლასი, რომლის დეტალები გარედან არ უნდა იყოს ხელმისაწვდომი.
  • ჯგუფավորում: ლოგიკურად დაკავშირებული კლასების ერთობლიობა.
  • კოლბეკების / მოსმენის დამზადება: ხშირად გამოიყენება ანონიმური შიდა კლასების შექმნა ინტერფეისების ან აბსტრაქტული კლასების რეალიზაციისთვის.
  • იტერატორები: შიდა კლასი მოსახერხებელია იტერატორის რეალიზაციისთვის, რადგან აქვს წვდომა კოლექციის შიდა მდგომარეობაზე.

მაგალითი (Java):

class OuterClass {
    private int outerField;

    // სტატიკური შიდა კლასი
    static class StaticNestedClass {
        void print() {
            // არ აქვს წვდომა outerField-ზე
            System.out.println("From StaticNestedClass");
        }
    }

    // ნესტატიკური შიდა კლასი (Inner Class)
    class InnerClass {
        void print() {
            // აქვს წვდომა outerField-ზე
            System.out.println("outerField: " + outerField);
        }
    }
}
// სტატიკური შიდა კლასის ინстанციის შექმნა
OuterClass.StaticNestedClass staticNested = new OuterClass.StaticNestedClass();
staticNested.print();

// შიდა კლასის ინстанციის შექმნა
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.print();