Sobes.tech
Middle

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

sobes.tech AI

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

შიდა კლასი — ეს არის კლასი, რომელიც განსაზღვრული სხვა კლასის შიგნით.

Java- ში შიდა კლასების ტიპები:

  • სტატიკური შიდა კლასი (Static Nested Classes):

    • ხელმისაწვდომია გარეთ არსებული კლასი მისი ინსტანციის გარეშე.
    • პირდაპირ არ აქვს წვდომა გარეთ არსებული კლასის ნესტიანი ველებსა და მეთოდებზე.
    • გამოაცხადება static სიტყვით.
  • შიდა კლასი (Inner Classes):

    • მომხსენებელი შიდა კლასი (Member Inner Classes):
      • გამოაცხადება გარეთ არსებული კლასის წევრის დონეზე.
      • აქვს წვდომა ყველა წევრზე გარეთ არსებული კლასის (ჩემპიონი ჩათვლით).
      • საჭიროებს გარეთ არსებული კლასის ინსტანციის შექმნას თავისი ინსტანციისთვის.
    • ლოკალური შიდა კლასი (Local Inner Classes):
      • განსაზღვრული მეთოდის, კონსტრუქტორის ან ინიციალიზაციის ბლოკის შიგნით.
      • მხოლოდ ამ მეთოდის/ბლოკის ფარგლებში ჩანს.
      • აქვს წვდომა final ან ეფექტურად final ადგილობრივ ცვლელებზე გარეთ არსებული კონტექსტიდან.
    • ანონიმური შიდა კლასი (Anonymous Inner Classes):
      • სახელის გარეშე კლასი.
      • გამოიყენება ობიექტების შესაქმნელად, რომლებიც დაუყოვნებლივ ახორციელებენ ინტერფეისს ან განავრცობენ კლასს.
      • გამოაცხადება და ინსტანცირება ერთ ოპერაციაში.

სტატიკური შიდა კლასის მაგალითი:

class OuterClass {
    private static String msg = "Hello from Outer";

    static class StaticNestedClass {
        public void display() {
            // შეუძლია წვდომა გარეთ არსებული კლასის სტატიკურ წევრებზე
            System.out.println(msg);
        }
    }
}
// გამოყენება
// OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
// nestedObject.display();

მომხსენებელი შიდა კლასის მაგალითი:

class OuterClass {
    private String msg = "Hello from Outer";

    class InnerClass {
        public void display() {
            // შეუძლია წვდომა ყველა წევრზე
            System.out.println(msg);
        }
    }
}
// გამოყენება
// OuterClass outerObject = new OuterClass();
// OuterClass.InnerClass innerObject = outerObject.new InnerClass();
// innerObject.display();

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

  • გაერთიანება: ლოგიკურად დაკავშირებული კლასები შეიძლება გაერთიანდეს.
  • ინკაფსულაცია: შიდა კლასებს შეუძლიათ წვდომა გარეთ არსებული კლასის პირად წევრებზე, რაც უკეთეს ინკაფსულაციას უზრუნველყოფს.
  • კითხულობა და შენარჩუნება: დამალული დახმარებითი კლასები ძირითადი კლასის შიგნით.
  • ეფექტურობა: შეიძლება გამოყენებულ იქნას უფრო კომპაქტური და ეფექტური მონაცემთა სტრუქტურების შესაქმნელად.