Sobes.tech
Junior

Kas ir iekšējās klases?

sobes.tech AI

Atbilde no AI

Iekšējās klases ir klases, kas ir deklarētas citas klases ietvaros. Tās iedala divos galvenajos tipos: statiskās iekšējās klases (statiskie klases locekļi) un iekšējās klases (nestatiskie klases locekļi).

Statiskās iekšējās klases:

  • Ir saistītas ar ārējo klasi, ne ar tās instanci.
  • Var piekļūt tikai ārējās klases statiskajiem locekļiem.
  • Var tikt izveidotas bez ārējās klases instances.

Iekšējās klases:

  • Ir saistītas ar ārējās klases instanci.
  • Var piekļūt visiem ārējās klases locekļiem (ieskaitot private).
  • Prasa ārējās klases instanci to izveidei.

Piemēri:

  • Grupēšana: Loģiski saistītas klases var apvienot, lai uzlabotu koda lasāmību un organizāciju.
  • Aizsardzība: Iekšējās klases piekļūst privātajiem ārējās klases locekļiem, ļaujot slēpt īstenošanas detaļas.
  • Notikumu klausītāji (Java): Bieži tiek izmantoti anonimām iekšējām klasēm.
  • Palīgklases: Mazas klases, ko izmanto tikai ārējā klase.
// Statiskās iekšējās klases piemērs
class OuterClass {
    static int outerStaticField = 1;
    int outerInstanceField = 2;

    static class StaticNestedClass {
        void display() {
            System.out.println("Ārējās statiskās lauks: " + outerStaticField);
            // Tieši nevar piekļūt outerInstanceField
        }
    }
}

// Iekšējās klases piemērs
class AnotherOuterClass {
    int outerField = 10;

    class InnerClass {
        void display() {
            System.out.println("Ārējās lauks: " + outerField); // Piekļuve ārējās klases laukam
        }
    }
}

Salīdzināšanas tabula:

Īpašība Statiskā iekšējā klase Iekšējā klase
Saistība Ar ārējo klasi Ar ārējās klases instanci
Piekļuve locekļiem Tikai statiskie Visi locekļi (ieskaitot private)
Nepieciešama instancija
Var saturēt statiskos locekļus Nē (izņemot konstantes)