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:
-
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 // } } } -
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.