Sobes.tech
Junior

Kas ir iekšējās klases?

sobes.tech AI

Atbilde no AI

Ieliktās klases (Nested Classes) ir klases, kas definētas citas klases iekšienē. Tās iedala galvenajos divos veidos:

  1. Statiskās iekšējās klases (Static Nested Classes): Tās ir līdzīgas ārējās klases statiskajiem locekļiem. Tām nav tiešas piekļuves ārējās klases nestatiskajiem locekļiem. Tās tiek izveidotas bez ārējās klases instances.

    Piemērs Java:

    class OuterClass {
        static int outerStaticField;
        int outerInstanceField;
    
        static class StaticNestedClass {
            void accessOuterStatic() {
                // Piekļuve OuterClass statiskajam loceklim
                int value = OuterClass.outerStaticField;
            }
    
            // Nav tiešas piekļuves outerInstanceField
            // void accessOuterInstance() {
            //     int value = outerInstanceField; // Kompilācijas kļūda
            // }
        }
    }
    
  2. Iekšējās klases (Inner Classes): Nestatiskās. Tām ir piekļuve visiem ārējās klases locekļiem, ieskaitot statiskos un nestatiskos, pat privātos. Iekšējās klases instances ir saistītas ar ārējās klases instance. Tās tiek izveidotas, izmantojot ārējās klases instance.

    Piemērs Java:

    class OuterClass {
        static int outerStaticField;
        int outerInstanceField;
    
        class InnerClass {
             void accessOuterMembers() {
                 // Piekļuve ārējās klases statiskajiem un nestatiskajiem locekļiem
                 int staticValue = OuterClass.outerStaticField;
                 int instanceValue = outerInstanceField;
             }
        }
    }
    

Tāpat ir arī specifiski iekšējo klasu veidi:

  • Lokālās klases (Local Classes): Definētas bloka iekšienē (piemēram, metodes, konstruktorā vai inicializācijas blokā). Tās ir pieejamas tikai šī bloka ietvaros.
  • Anonīmās klases (Anonymous Classes): Tām nav nosaukuma. Tās tiek izmantotas vienreizējas realizācijas izveidei interfeisam vai klases paplašināšanai. Tās tiek definētas un instanciētas vienlaikus.

Iekšējo klasu priekšrocības:

  • Loģiska grupēšana: Tās ļauj grupēt klases, kas ir loģiski saistītas, uzlabojot koda lasāmību.
  • Inkapulācija: Tās var piekļūt privātajiem ārējās klases locekļiem, stiprinot inkapsulāciju.
  • Vienkāršāks kods: Atvieglo rakstīt kodu, ja tas tiek izmantots tikai vienas citas klases ietvaros.

Pielietojums QA automatizācijā:

  • Page Object Model: Iekšējās vai statiskās iekšējās klases var tikt izmantotas lapas elementu organizēšanai (piemēram, sadaļas, modālie logi) galvenās Page Object klases ietvaros.
  • Notikumu apstrādātāji / Callback funkcijas: Anonīmās vai vietējās klases var tikt izmantotas testu īstenošanai, izmantojot callback funkcijas vai notikumu apstrādātājus, piemēram, darbā ar UI elementiem vai klausītājiem.
  • Konfigurācijas klases: Statiskās iekšējās klases var saturēt konstantes vai konfigurācijas parametrus, kas ir specifiski ārējai klasei.