Sobes.tech
Junior — Middle

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

sobes.tech AI

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

Java-ში (და Android-ში) შენაზღვრული კლასი არის ნებისმიერი კლასი, რომელიც გამოცხადებულია სხვა კლასის შიგნით. შენაზღვრული კლასი არსებობს ორი ტიპით:

  1. სტატიკური შენაზღვრული კლასი (static nested class) — გამოცხადებულია static მორფით. მას არ აქვს პირდაპირი წვდომა გარეგანი კლასის არა-სტატიკურ წევრებზე.
  2. შიდა კლასი (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);
        }
    }
}

ძირითადი განსხვავება ის არის, რომ შიდა კლასი დაკავშირებულია გარეგანი კლასის ობიექტთან და შეუძლია მიმართოს მის არა-სტატიკურ წევრებს, ხოლო სტატიკური შენაზღვრული კლასი — არა.