Middle
რა არის შიდა კლასი?
sobes.tech AI
პასუხი AI-სგან
შიდა კლასი — ეს არის კლასი, რომელიც განსაზღვრული სხვა კლასის შიგნით.
Java- ში შიდა კლასების ტიპები:
-
სტატიკური შიდა კლასი (Static Nested Classes):
- ხელმისაწვდომია გარეთ არსებული კლასი მისი ინსტანციის გარეშე.
- პირდაპირ არ აქვს წვდომა გარეთ არსებული კლასის ნესტიანი ველებსა და მეთოდებზე.
- გამოაცხადება
staticსიტყვით.
-
შიდა კლასი (Inner Classes):
- მომხსენებელი შიდა კლასი (Member Inner Classes):
- გამოაცხადება გარეთ არსებული კლასის წევრის დონეზე.
- აქვს წვდომა ყველა წევრზე გარეთ არსებული კლასის (ჩემპიონი ჩათვლით).
- საჭიროებს გარეთ არსებული კლასის ინსტანციის შექმნას თავისი ინსტანციისთვის.
- ლოკალური შიდა კლასი (Local Inner Classes):
- განსაზღვრული მეთოდის, კონსტრუქტორის ან ინიციალიზაციის ბლოკის შიგნით.
- მხოლოდ ამ მეთოდის/ბლოკის ფარგლებში ჩანს.
- აქვს წვდომა
finalან ეფექტურადfinalადგილობრივ ცვლელებზე გარეთ არსებული კონტექსტიდან.
- ანონიმური შიდა კლასი (Anonymous Inner Classes):
- სახელის გარეშე კლასი.
- გამოიყენება ობიექტების შესაქმნელად, რომლებიც დაუყოვნებლივ ახორციელებენ ინტერფეისს ან განავრცობენ კლასს.
- გამოაცხადება და ინსტანცირება ერთ ოპერაციაში.
- მომხსენებელი შიდა კლასი (Member 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();
შიდა კლასების გამოყენების უპირატესობები:
- გაერთიანება: ლოგიკურად დაკავშირებული კლასები შეიძლება გაერთიანდეს.
- ინკაფსულაცია: შიდა კლასებს შეუძლიათ წვდომა გარეთ არსებული კლასის პირად წევრებზე, რაც უკეთეს ინკაფსულაციას უზრუნველყოფს.
- კითხულობა და შენარჩუნება: დამალული დახმარებითი კლასები ძირითადი კლასის შიგნით.
- ეფექტურობა: შეიძლება გამოყენებულ იქნას უფრო კომპაქტური და ეფექტური მონაცემთა სტრუქტურების შესაქმნელად.