Sobes.tech
Middle

Kas ir iekšējās klases?

sobes.tech AI

Atbilde no AI

Iekšējā klase ir klase, kas ir definēta citas klases iekšienē.

Java iekšējo klases veidi:

  • Statiskā iekšējā klase (Static Nested Classes):

    • Pieejama no ārējās klases bez tās instances.
    • Tieši nepiekrīt piekļuvi ārējās klases nestatiskajiem laukiem un metodēm.
    • Deklarēta ar static atslēgas vārdu.
  • Iekšējās klases (Inner Classes):

    • Lomas-iekšējās klases (Member Inner Classes):
      • Deklarētas ārējās klases locekļu līmenī.
      • Pieejamas visiem ārējās klases locekļiem (ieskaitot privātos).
      • Prasa ārējās klases instance, lai izveidotu savu instance.
    • Vietējās iekšējās klases (Local Inner Classes):
      • Definētas metodes, konstruktora vai inicializācijas blokā.
      • Redzamas tikai šīs metodes/bloka ietvaros.
      • Pieejas ir final vai efektīvi final vietējiem mainīgajiem ārējā konteksta.
    • Anonīmās iekšējās klases (Anonymous Inner Classes):
      • Klases bez nosaukuma.
      • Izmanto, lai izveidotu objektus, kas tūlīt realizē interfeisu vai paplašina klasi.
      • Definētas un instancētas vienlaikus.

Piemērs statiskai iekšējai klasei:

class OuterClass {
    private static String msg = "Hello from Outer";

    static class StaticNestedClass {
        public void display() {
            // Var piekļūt ārējās klases statiskajiem locekļiem
            System.out.println(msg);
        }
    }
}
// Izmantošana
// OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
// nestedObject.display();

Piemērs locekļa-iekšējai klasei:

class OuterClass {
    private String msg = "Hello from Outer";

    class InnerClass {
        public void display() {
            // Var piekļūt visiem ārējās klases locekļiem
            System.out.println(msg);
        }
    }
}
// Izmantošana
// OuterClass outerObject = new OuterClass();
// OuterClass.InnerClass innerObject = outerObject.new InnerClass();
// innerObject.display();

Iekšējo klases izmantošanas priekšrocības:

  • Grupēšana: Loģiski saistītas klases var tikt grupētas.
  • Inkapulācija: Iekšējās klases var piekļūt privātajiem ārējās klases locekļiem, nodrošinot labāku inkapsulāciju.
  • Lasāmība un uzturēšana: Slēpj palīgklases galvenās klases iekšienē.
  • Efektivitāte: Var tikt izmantotas, lai izveidotu kompakākas un efektīvākas datu struktūras.