Skip to main content

Co je anonymní vnitřní třída?

V objektově orientovaném počítačovém programování je anonymní vnitřní třída třída, která je deklarována uvnitř metody, ale je nepojmenována.Anonymní vnitřní třída má několik omezení, která se liší od normální třídy, včetně omezení rozsahu proměnných, kterým má přístup.Existují některé velmi specifické situace, ve kterých použití anonymní vnitřní třídy může učinit zdrojový kód čitelnější, ale primárně se používá k vynucení zapouzdření, kde by to mohlo komplikovat generování samostatných tříd.(OOP) Že objekt a jeho komponenty by měly být nějakým způsobem chráněny a vázány na objekt.Anonymní vnitřní třídy a vnitřní třídy obecně pomáhají realizovat zapouzdření zvláště složitých objektů.Místo toho, aby musela vytvářet třídu, která se spoléhá na samostatnou vnější třídu, je uměle a potenciálně odhalit některé komponenty, anonymní vnitřní třída může je pevně spojit.pomáhat překonat omezení jediné dědictví.Pokud objekt zdědí z jedné třídy, ale pak potřebuje přístup k druhé, může být za běhu generována vnitřní třída a poté předána příslušným obslužným lékařům.Tato technika je běžná u zpětných volání a posluchačů událostí.Jedinou alternativou by bylo vytvořit celou druhou třídu, ve které jsou přepsány pouze jedna nebo dvě metody.Primárním omezením je, že anonymní vnitřní třída nemůže získat přístup k proměnným metody, ve které sídlí, pokud tyto proměnné nejsou prohlášeny za konečné.Je to proto, že vnitřní třída by mohla pokračovat v fungování po životě třídy a metody, ve které hnízdí.Proměnné balicí třídy by byly zničeny, jakmile její život skončil, takže odkazy, které se drží vnitřní třídy, by se okamžitě staly neplatnými.Jedinou výjimkou je konečná proměnná, protože bude existovat mimo instanci.

Jedním ze konkrétnějších použití pro anonymní vnitřní třídu je ochrana kódu.Mnoho oop jazyků zajišťuje mechanismus zvaný Reflection.Reflexe umožňuje programu rozdělit jinou třídu a zjistit, jaké jsou jeho členské proměnné a metody, ale ne samotný kód.Použitím anonymní vnitřní třídy jsou obsah vnitřní třídy chráněny před odrazem a vnitřní fungování větší třídy může být účinně skryto.