Co je Anonymous Inner Class?

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 není pojmenována. Anonymní vnitřní třída má několik omezení, která ji činí odlišnou od normální třídy, včetně omezení rozsahu proměnných, ke kterým má přístup. Existují některé velmi specifické situace, ve kterých použití anonymní vnitřní třídy může zlepšit čitelnost zdrojového kódu, ale primárně se používá k vynucení enkapsulace, kde by ji generování samostatných tříd mohlo komplikovat.

Zapouzdření je koncept objektově orientovaného programování (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ů. Namísto vytvoření třídy, která se spoléhá na samostatnou externí třídu, která je umí spojuje dohromady a potenciálně vystavuje některé ze složek, může anonymní vnitřní třída spojit tyto dva dohromady pevně.

V některých programovacích jazycích může anonymní vnitřní třída pomoci překonat omezení jediného dědictví. Pokud objekt zdědí z jedné třídy, ale pak potřebuje přístup k jiné, může být generována vnitřní třída za běhu a poté předána příslušným manipulátorů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é budou přepsány pouze jedna nebo dvě metody.

Anonymní vnitřní třídy mají zavedena určitá omezení, aby se zabránilo rozbití enkapsulace a vynucení rozsahu. Primární omezení je, že anonymní vnitřní třída nemůže přistupovat k proměnným metody, ve které je umístěna, pokud tyto proměnné nejsou deklarovány jako konečné. Je tomu tak proto, že vnitřní třída by mohla pokračovat ve fungování po dobu života třídy a metody, ve které hnízdí. Proměnné třídy obtékání by byly zničeny, jakmile skončí její život, takže odkazy, které vnitřní třída držela, by se okamžitě staly neplatnými. Jedinou výjimkou je finální proměnná, protože bude existovat i mimo instanci.

Jedním z konkrétnějších použití anonymní vnitřní třídy je ochrana kódu. Mnoho jazyků OOP poskytuje mechanismus zvaný reflexe. Reflexe umožňuje programu rozřezat jinou třídu a zjistit, jaké jsou její členské proměnné a metody, ale nikoli samotný kód. Použitím anonymní vnitřní třídy je obsah vnitřní třídy chráněn před odrazem a vnitřní fungování vyšší třídy lze efektivně skrýt.

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?