Sobes.tech
Junior

Co jsou to vnořené třídy?

sobes.tech AI

Odpověď od AI

Vnořené třídy (Nested Classes) jsou třídy definované uvnitř jiné třídy. Dělí se na dva hlavní typy:

  1. Statické vnořené třídy (Static Nested Classes): Podobné statickým členům vnější třídy. Nemají přímý přístup k nestatickým členům vnější třídy. Jsou vytvářeny bez instance vnější třídy.

    Příklad v Javě:

    class OuterClass {
        static int outerStaticField;
        int outerInstanceField;
    
        static class StaticNestedClass {
            void accessOuterStatic() {
                // Přístup ke statickému členu OuterClass
                int value = OuterClass.outerStaticField;
            }
    
            // Nemá přímý přístup k outerInstanceField
            // void accessOuterInstance() {
            //     int value = outerInstanceField; // Chyba při kompilaci
            // }
        }
    }
    
  2. Vnořené třídy (Inner Classes): Nestatické. Mají přístup ke všem členům vnější třídy, včetně statických i nestatických, dokonce i soukromých. Instanci vnitřní třídy je spojena s instancí vnější třídy. Jsou vytvářeny s použitím instance vnější třídy.

    Příklad v Javě:

    class OuterClass {
        static int outerStaticField;
        int outerInstanceField;
    
        class InnerClass {
             void accessOuterMembers() {
                 // Přístup ke statickým i nestatickým členům OuterClass
                 int staticValue = OuterClass.outerStaticField;
                 int instanceValue = outerInstanceField;
             }
        }
    }
    

Existují také specifické druhy vnitřních tříd:

  • Lokální třídy (Local Classes): Definují se uvnitř bloku (například metody, konstruktoru nebo inicializačního bloku). Jsou dostupné pouze v rámci tohoto bloku.
  • Anonymní třídy (Anonymous Classes): Nemají jméno. Používají se k vytvoření jednorázové implementace rozhraní nebo rozšíření třídy. Jsou definovány a instancovány současně.

Výhody vnořených tříd:

  • Logické seskupení: Umožňují seskupit třídy, které jsou logicky propojené, čímž zvyšují čitelnost kódu.
  • Zapouzdření: Mohou mít přístup k soukromým členům vnější třídy, čímž posilují zapouzdření.
  • Jednodušší kód: Usnadňují psaní kódu pro třídy používané pouze jedním jiným třídou.

Použití v QA Automatizaci:

  • Page Object Model: Vnitřní nebo statické vnořené třídy mohou být použity k organizaci prvků stránky (například sekcí, modálních oken) uvnitř hlavní třídy Page Object.
  • Obsluhovače událostí / Kolbék: Anonymní nebo místní třídy mohou být použity k implementaci testů s využitím kolbéků nebo obsluhovačů událostí, například při práci s UI prvky nebo posluchači.
  • Konfigurační třídy: Statické vnořené třídy mohou obsahovat konstanty nebo konfigurační parametry specifické pro vnější třídu.