Sobes.tech
Middle

Mis on sisemised klassid ja kuidas neid programmeerimisel kasutatakse?

sobes.tech AI

Vastus AI-lt

Sisemised klassid on klassid, mis on deklareeritud teise klassi sees. Need võimaldavad loogiliselt grupeerida klasse, mida kasutatakse ainult ühes kohas, suurendavad kapseldamist ja muudavad koodi loetavamaks.

Sisemised klassid on:

  • Statilised (Static Nested Classes): neil puudub juurdepääs välise klassi mitte-staatilistele liikmetele. Neid saab luua ilma välise klassi eksemplarita.
  • Mittestaatilised (Inner Classes): neil on juurdepääs kõigile välise klassi liikmetele (sh privaatsed). Mittestaatilise siseklassi eksemplari loomine nõuab välise klassi eksemplari.

Kasutus:

  • Rakenduse varjamine: Siseklassi saab kasutada abiklassina, mille rakendusdetailid ei tohiks olla väljast kättesaadavad.
  • Grupitamine: Loogiliselt seotud klasside ühendamine.
  • Tagasikutsed / kuulajad: Sageli kasutatakse anonüümsete siseklasside loomisel, mis rakendavad liideseid või abstraktseid klasse.
  • Iteraatorid: Siseklass on mugav iteratsiooni rakendamiseks, kuna tal on juurdepääs kogumi sisesele olekule.

Näide (Java):

class OuterClass {
    private int outerField;

    // Statiline siseklass
    static class StaticNestedClass {
        void print() {
            // Ei pääse ligi outerField'ile
            System.out.println("From StaticNestedClass");
        }
    }

    // Mittestaatiline siseklass (Inner Class)
    class InnerClass {
        void print() {
            // Pääseb ligi outerField'ile
            System.out.println("outerField: " + outerField);
        }
    }
}
// Statilise siseklassi eksemplari loomine
OuterClass.StaticNestedClass staticNested = new OuterClass.StaticNestedClass();
staticNested.print();

// Sisemise klassi eksemplari loomine
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.print();