Sobes.tech
Junior

Ի՞նչ են ներքին դասերը։

sobes.tech AI

Պատասխան AI-ից

Ներքին դասեր (Nested Classes) — դա դասեր են, որոնք սահմանված են մյուս դասի ներսում։ Դրանք բաժանվում են երկու հիմնական տեսակների.

  1. Ստատիկ ներքին դասեր (Static Nested Classes): Դրանք նման են արտաքին դասի ստատիկ անդամներին։ Դրանք չունեն ուղիղ հասանելիություն արտաքին դասի ոչ ստատիկ անդամներին։ Ստեղծվում են առանց արտաքին դասի օրինակ ունենալու։

    Java-ում օրինակ՝

    class OuterClass {
        static int outerStaticField;
        int outerInstanceField;
    
        static class StaticNestedClass {
            void accessOuterStatic() {
                // Հասանելիություն OuterClass-ի ստատիկ անդամին
                int value = OuterClass.outerStaticField;
            }
    
            // Ունեն ուղիղ հասանելիություն outerInstanceField-ին
            // void accessOuterInstance() {
            //     int value = outerInstanceField; // Կոմպիլյացիոն սխալ
            // }
        }
    }
    
  2. Ներքին դասեր (Inner Classes): Նեստատիկ։ Ունեն հասանելիություն բոլոր անդամներին՝ ներառյալ ստատիկ և նեստատիկ, նույնիսկ՝ մասնավոր։ Ներքին դասի օրինակը կապված է արտաքին դասի օրինակին։ Ստեղծվում է արտաքին դասի օրինակով։

    Java-ում օրինակ՝

    class OuterClass {
        static int outerStaticField;
        int outerInstanceField;
    
        class InnerClass {
             void accessOuterMembers() {
                 // Հասանելիություն արտաքին դասի ստատիկ և նեստատիկ անդամներին
                 int staticValue = OuterClass.outerStaticField;
                 int instanceValue = outerInstanceField;
             }
        }
    }
    

Կան նաև հատուկ տեսակներ՝

  • Տեղական դասեր (Local Classes): Դրանց սահմանում են բլոկի ներսում (օրինակ՝ մեթոդ, կոնստրուկտոր կամ ինիցիալիզացիոն բլոկում): Դրանք հասանելի են միայն այդ բլոկում։
  • Անանուն դասեր (Anonymous Classes): Անուն չունեն։ Օգտագործվում են միանգամյա կիրառման համար՝ ինտերֆեյսի կամ դասի ընդլայնման։ Դրանք սահմանվում և ստեղծվում են միաժամանակ։

Ներքին դասերի առավելությունները:

  • Հոգեկան խմբավորում: Դրանք թույլ են տալիս խմբավորել դասեր, որոնք տրամաբանականորեն կապված են, ինչը բարելավում է կոդի ընթեռնելիությունը։
  • Զտում: Կարող են հասանելիություն ունենալ արտաքին դասի մասնավոր անդամներին՝ ապահովելով ավելի ուժեղ զտում։
  • Հեշտ կոդ: Օգնում են գրել կոդ՝ օգտագործվող միայն մեկ այլ դասի կողմից։

Հայտարարություններ QA ավտոմատացման մեջ:

  • Page Object Model: Ներքին կամ ստատիկ ներքին դասերը կարող են օգտագործվել էջի տարրերի կազմակերպման համար՝ օրինակ՝ բաժիններ, մոդալ պատուհաններ՝ հիմնական Page Object դասի ներսում։
  • Իրադարձությունների մշակողներ / Callback-ներ: Անանուն կամ տեղական դասերը կարող են օգտագործվել թեստեր իրականացնելու համար՝ callback-ներ կամ իրադարձությունների մշակողներ օգտագործելով՝ օրինակ՝ UI տարրերի կամ լսողների հետ աշխատելիս։
  • Կոնֆիգուրացիոն դասեր: Ստատիկ ներքին դասերը կարող են պարունակել կոնստանտներ կամ կոնֆիգուրացիոն պարամետրեր՝ հատուկ արտաքին դասի համար։