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) |
| საჭიროებს ინстанციას | არა | კი |
| შეიძლება შეიცავდეს სტატიკურ წევრებს | კი | არა (გარდა კონსტანტების) |