Sobes.tech
Junior

Kas yra įterptosios klasės?

sobes.tech AI

Atsakymas iš AI

Įdėti klasės (Nested Classes) yra klasės, apibrėžtos kitoje klasėje. Jie skirstomi į du pagrindinius tipus:

  1. Statinės įdėtos klasės (Static Nested Classes): Panašios į išorinės klasės statinius narius. Jos neturi tiesioginės prieigos prie nestatinių išorinės klasės narių. Sukuriamos be išorinės klasės egzemplioriaus.

    Pavyzdys Java:

    class OuterClass {
        static int outerStaticField;
        int outerInstanceField;
    
        static class StaticNestedClass {
            void accessOuterStatic() {
                // Prieiga prie OuterClass statinio nario
                int value = OuterClass.outerStaticField;
            }
    
            // Neturi tiesioginės prieigos prie outerInstanceField
            // void accessOuterInstance() {
            //     int value = outerInstanceField; // Kompiliacijos klaida
            // }
        }
    }
    
  2. Vidinės klasės (Inner Classes): Nestatytinės. Turi prieigą prie visų išorinės klasės narių, įskaitant statinius ir nestatinius, netgi privačius. Vidinės klasės egzempliorius susijęs su išorinės klasės egzemplioriumi. Sukuriamas naudojant išorinės klasės egzempliorių.

    Pavyzdys Java:

    class OuterClass {
        static int outerStaticField;
        int outerInstanceField;
    
        class InnerClass {
             void accessOuterMembers() {
                 // Prieiga prie statinių ir nestatinių išorinės klasės narių
                 int staticValue = OuterClass.outerStaticField;
                 int instanceValue = outerInstanceField;
             }
        }
    }
    

Taip pat egzistuoja specifiniai vidinių klasių tipai:

  • Vietinės klasės (Local Classes): Apibrėžiamos bloko viduje (pavyzdžiui, metodo, konstruktoriaus ar inicializacijos bloko). Prieinamos tik šiame bloke.
  • Anoniminės klasės (Anonymous Classes): Neturi pavadinimo. Naudojamos kuriant vienkartinę įgyvendinimą sąsajos ar klasės išplėtimui. Apibrėžiamos ir kuriamos vienu metu.

Privalumai įdėtų klasių:

  • Loginė grupavimas: Leidžia grupuoti klases, kurios logiškai susijusios, didinant kodo skaitomumą.
  • Inkapuliacija: Gali turėti prieigą prie privačių išorinės klasės narių, stiprinant inkapsuliaciją.
  • Patogesnis kodas: Supaprastina rašyti kodą, naudojamą tik vieno kito klaso.

Naudojimas QA automatizacijoje:

  • Page Object Model: Vidinės arba statinės įdėtos klasės gali būti naudojamos puslapio elementų organizavimui (pavyzdžiui, sekcijos, modaliniai langai) pagrindinio Page Object klasės viduje.
  • Įvykio tvarkytojai / Callback'ai: Anoniminės arba vietinės klasės gali būti naudojamos testų įgyvendinimui naudojant callback'us arba įvykio tvarkytojus, pavyzdžiui, dirbant su UI elementais ar klausytojais.
  • Konfigūracijos klasės: Statinės įdėtos klasės gali turėti konstantas arba konfigūracijos parametrus, būdingus išorinei klasei.