Sobes.tech
Junior

Ce sunt clasele imbricate?

sobes.tech AI

Răspuns de la AI

Clasele imbricate (Nested Classes) sunt clase definite în interiorul altei clase. Ele sunt împărțite în două tipuri principale:

  1. Clase imbricate statice (Static Nested Classes): Sunt similare cu membrii statici ai clasei externe. Nu au acces direct la membrii non-staționali ai clasei externe. Sunt create fără o instanță a clasei externe.

    Exemplu în Java:

    class OuterClass {
        static int outerStaticField;
        int outerInstanceField;
    
        static class StaticNestedClass {
            void accessOuterStatic() {
                // Acces la membru static al OuterClass
                int value = OuterClass.outerStaticField;
            }
    
            // Nu are acces direct la outerInstanceField
            // void accessOuterInstance() {
            //     int value = outerInstanceField; // Eroare de compilare
            // }
        }
    }
    
  2. Clase interne (Inner Classes): Nu sunt statice. Au acces la toate membrii clasei externe, inclusiv statice și non-staționale, chiar și private. Instanța clasei interne este legată de o instanță a clasei externe. Sunt create folosind o instanță a clasei externe.

    Exemplu în Java:

    class OuterClass {
        static int outerStaticField;
        int outerInstanceField;
    
        class InnerClass {
             void accessOuterMembers() {
                 // Acces la membrii statici și non-staționali ai OuterClass
                 int staticValue = OuterClass.outerStaticField;
                 int instanceValue = outerInstanceField;
             }
        }
    }
    

Există și tipuri specifice de clase interne:

  • Clase locale (Local Classes): Sunt definite în interiorul unui bloc (de exemplu, metodă, constructor sau bloc de inițializare). Sunt accesibile doar în interiorul acestui bloc.
  • Clase anonime (Anonymous Classes): Nu au nume. Sunt utilizate pentru a crea o implementare unică a unei interfețe sau extinderi a unei clase. Sunt definite și instantiate în același timp.

Avantajele claselor imbricate:

  • Grupare logică: Permite gruparea claselor care sunt logic legate, îmbunătățind lizibilitatea codului.
  • Încapsulare: Pot avea acces la membrii privați ai clasei externe, oferind o încapsulare mai puternică.
  • Cod mai simplu: Facilitează scrierea de cod pentru clasele utilizate doar de o altă clasă.

Aplicare în QA Automation:

  • Modelul Page Object: Clasele interne sau statice pot fi folosite pentru organizarea elementelor paginii (de exemplu, secțiuni, ferestre modale) în interiorul clasei principale Page Object.
  • Handleri de evenimente / Callbacks: Clasele anonime sau locale pot fi folosite pentru implementarea testelor folosind callbacks sau handleri de evenimente, de exemplu, când se lucrează cu elemente UI sau ascultători.
  • Clase de configurare: Clasele imbricate statice pot conține constante sau parametri de configurare specifici pentru clasa externă.