Sobes.tech
Junior

Mis on sisemised klassid?

sobes.tech AI

Vastus AI-lt

Sisemklassid on klassid, mis on deklareeritud teise klassi sees. Nad jagunevad kaheks põhiliigiks: staatilised sisemklassid (staatilised liikmed) ja sisemklassid (mitstatilised liikmed).

Staatilised sisemklassid:

  • On seotud välise klassiga, mitte selle eksemplariga.
  • Võivad viidata ainult välise klassi staatilistele liikmetele.
  • Võivad olla loodud ilma välise klassi eksemplarita.

Sisemklassid:

  • On seotud välise klassi eksemplariga.
  • Võivad viidata kõigile välise klassi liikmetele (sh private).
  • Nõuavad nende loomisel välise klassi eksemplari.

Kasutusnäited:

  • Grupitamine: Loogiliselt seotud klassid saab ühendada koodi parema loetavuse ja organiseerimise jaoks.
  • Kapseldus: Siseklassidel on juurdepääs välise klassi privaatsetele liikmetele, võimaldades peidetud teostuse detaile.
  • Sündmuste kuulajad (Java): Kasutatakse sageli anonüümsete siseklasside loomiseks.
  • Abiklassid: Väikesed klassid, mida kasutatakse ainult välise klassi poolt.
// Näide staatilisest siseklassist
class OuterClass {
    static int outerStaticField = 1;
    int outerInstanceField = 2;

    static class StaticNestedClass {
        void display() {
            System.out.println("Välise staatilise välja: " + outerStaticField);
            // Otse ei saa viidata outerInstanceField-ile
        }
    }
}

// Näide siseklassist
class AnotherOuterClass {
    int outerField = 10;

    class InnerClass {
        void display() {
            System.out.println("Välise välja: " + outerField); // Viide välise klassi välja
        }
    }
}

Võrdlustabel:

Omadus Staatiline siseklass Siseklass
Seos Seotud välise klassiga Seotud välise klassi eksemplariga
Pääs liikmetele Ainult staatilised Kõik liikmed (sh private)
Nõuab eksemplari Ei Jah
Võib sisaldada statilisi liikmeid Jah Ei (välja arvatud konstantsed)