Co je to proměnná instance?
Proměnná instance je kus dat v objektově orientovaném programování, která má svou vlastní jedinečnou hodnotu pro každý objekt, ve kterém sídlí. Proměnné instance mohou být také nazývány členy instance, nestatická pole a datové členy. Jsou důležitou součástí většiny objektů, které drží specifické kusy dat, které objekt používá pro výpočet.
Například, pokud existují dva objekty, A a B, kde objekt A má proměnnou instance nazvanou „Blah“, a objekt B má také proměnnou instance nazvanou „Blah“, “dvě„ Blah “varianty jsou odlišné entity. Každá proměnná je spojena s objektem, který ji zapouzdřuje. Celé jméno proměnné „bla“ spojené s objektem A je „a.blah“, zatímco celé jméno proměnné „bla“ spojené s objektem B je „b.blah“. Každý, pokud tyto proměnné mohou mít svou vlastní hodnotu. Pokud jsou objekty A a B stejného typu a vytvoří se další předmět tohoto typu, a objekt C bude mít také proměnnou instance „bla“, což ji může mítS vlastní jedinečnou hodnotou.
proměnné instance jsou často zaměňovány se statickými proměnnými, ale oba se výrazně liší. Na rozdíl od proměnných instancí, z nichž každý objekt konkrétního typu má své vlastní statické proměnné, mají pouze jednu hodnotu a tato hodnota je stejná pro každý objekt vhodného typu. Statické proměnné se často nazývají třídní proměnné, které nejsou stejné jako proměnné instance.
V závislosti na vlastnostech viditelnosti, které se jim přiřazuje, mohou být proměnné instance viditelné pouze uvnitř konkrétního objektu, objektu a jeho podtříd nebo k objektu, ve kterém sídlí, stejně jako jakékoli jiné objekty. Tento konečný typ viditelnosti, nazývaný Viditelnost veřejnosti, je často považován za špatnou praxi například proměnné, protože je snadné porušit zásady zapouzdření v objektově orientovaném programování. Navzdory tomuto tabu jsou časy, kdy veřejná InstaProměnné NCE jsou užitečné. Například mnoho standardních tříd v Java má proměnné veřejné instance, což občas umožňuje snadnou úpravu vlastností.
Viditelnost proměnné instance také přichází do hry s dědičností. Pokud jedna třída zdědí z druhé, nevede okamžitě obě třídy přístup k proměnným instancí ostatních. Proměnné soukromých instancí v superclass a podtřídě zůstávají omezeny pouze na tyto třídy, takže soukromou proměnnou v podtřídě nelze vidět superclass a naopak. Jedinou proměnnou instancí, které vidí supertřída i podtřída, jsou chráněné proměnné v superclass.