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:
-
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 // } } } -
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.