Mis on sisemised klassid?
sobes.tech AI
Vastus AI-lt
Siseminekad klassid (Nested Classes) on klassid, mis on määratletud teise klassi sees. Nad jagunevad kaheks põhiliigiks:
-
Staatilised sisemised klassid (Static Nested Classes): Sarnased välise klassi staatilistele liikmetele. Neil puudub otsene juurdepääs välise klassi mitte-staatilistele liikmetele. Nad luuakse ilma välise klassi eksemplarita.
Näide Java-s:
class OuterClass { static int outerStaticField; int outerInstanceField; static class StaticNestedClass { void accessOuterStatic() { // Juurdepääs välise klassi staatilisele liikmele int value = OuterClass.outerStaticField; } // Ei saa otse juurde pääseda outerInstanceField-ile // void accessOuterInstance() { // int value = outerInstanceField; // Kompilatsiooniviga // } } } -
Sisemised klassid (Inner Classes): Mitte-staatilised. Neil on juurdepääs kõigile välise klassi liikmetele, kaasa arvatud staatilised ja mitte-staatilised, isegi privaatsed. Sisemise klassi eksemplar on seotud välise klassi eksemplariga. Nad luuakse välise klassi eksemplari kasutades.
Näide Java-s:
class OuterClass { static int outerStaticField; int outerInstanceField; class InnerClass { void accessOuterMembers() { // Juurdepääs välise klassi staatilistele ja mitte-staatilistele liikmetele int staticValue = OuterClass.outerStaticField; int instanceValue = outerInstanceField; } } }
Samuti on olemas spetsiifilised sisemiste klasside tüübid:
- Kohalikud klassid (Local Classes): Määratletud bloki sees (näiteks meetodis, konstruktoris või initsialiseerimisbloki). Saadaval ainult selle bloki piires.
- Anonüümsed klassid (Anonymous Classes): Neil pole nime. Kasutatakse ühekorra teostuse loomiseks liidese või klassi laiendamiseks. Määratletakse ja instantsi luuakse samaaegselt.
Sisemiste klasside eelised:
- Loogiline rühmitus: Võimaldab rühmitada klasse, mis on loogiliselt seotud, parandades koodi loetavust.
- Inkapulatsioon: Võib pääseda ligi privaatsõlmedele välise klassi sees, tugevdades inkapsulatsiooni.
- Lihtsam kood: Lihtsustab koodi kirjutamist, kui see on kasutusel ainult ühe teise klassi poolt.
Rakendused QA automatiseerimises:
- Page Object Model: Sisemised või staatilised sisemised klassid võivad olla kasutusel lehe elementide korraldamisel (näiteks sektsioonid, modaalaknad) peamise Page Object klassi sees.
- Sündmuste töötlejad / Callback-id: Anonüümsed või kohalikud klassid võivad olla kasutusel testide teostamisel callback-ide või sündmuste töötlejate kaudu, näiteks UI elementidega töötades või kuulajatega.
- Konfiguratsiooniklassid: Staatilised sisemised klassid võivad sisaldada konstante või konfiguratsiooniparameetreid, mis on spetsiifilised välise klassi jaoks.