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. Existuje několik velmi specifických situací, ve kterých použití anonymní vnitřní třídy může činit zdrojový kód čitelnější, ale primárně se používá k prosazování zapouzdření, kde by se generování samostatných tříd mohlo zkomplikovat.

Engapulace je koncept v objektově orientovaném programování (OOP), že by objekt a jeho komponenty by měly být nějakým způsobem chráněny a navázány k objektu. 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 vytvořit třídu, která se spoléhá na samostatnou vnější třídu, je uměle a potenciálně vystavena některým komponentům, anonymní vnitřní třída může ttj. Oba společně pevně.

V některých programovacích jazycích může anonymní vnitřní třída pomoci 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ření celé druhé třídy, ve které jsou přepsány pouze jedna nebo dvě metody.

Anonymní vnitřní třídy mají určitá omezení, aby se zabránilo přerušení zapouzdření a prosazování rozsahu. 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é baleníTřída by byla zničena, jakmile skončí jeho život, 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 specifičtě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ě skryté.

JINÉ JAZYKY

Pomohl vám tento článek? Děkuji za zpětnou vazbu Děkuji za zpětnou vazbu

Jak můžeme pomoci? Jak můžeme pomoci?