Sobes.tech
Junior

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:

  1. 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
            // }
        }
    }
    
  2. 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.