Junior — Middle
პროგრამირებაში შიდა კლასი და შიდა კლასი რა განსხვავებაა?
sobes.tech AI
პასუხი AI-სგან
Java-ში (და Android-ში) შენაზღვრული კლასი არის ნებისმიერი კლასი, რომელიც გამოცხადებულია სხვა კლასის შიგნით. შენაზღვრული კლასი არსებობს ორი ტიპით:
- სტატიკური შენაზღვრული კლასი (static nested class) — გამოცხადებულია
staticმორფით. მას არ აქვს პირდაპირი წვდომა გარეგანი კლასის არა-სტატიკურ წევრებზე. - შიდა კლასი (inner class) — შენაზღვრული კლასი, რომელიც არ არის
static. დაკავშირებულია გარეგანი კლასის ობიექტთან და აქვს წვდომა მის არა-სტატიკურ ველებსა და მეთოდებზე.
მაგალითი:
class Outer {
private int outerField = 10;
static class StaticNested {
void print() {
// შეუძლებელია პირდაპირ მიმართოს outerField-ს
System.out.println("სტატიკური შენაზღვრული კლასი");
}
}
class Inner {
void print() {
// შეიძლება მიმართოს outerField-ს
System.out.println("შიდა კლასი, outerField = " + outerField);
}
}
}
ძირითადი განსხვავება ის არის, რომ შიდა კლასი დაკავშირებულია გარეგანი კლასის ობიექტთან და შეუძლია მიმართოს მის არა-სტატიკურ წევრებს, ხოლო სტატიკური შენაზღვრული კლასი — არა.