Променлива на инстанция срещу локална променлива
Екземплярната променлива е тип променлива, която присъства в обектно-ориентираното програмиране. Това е променлива, която се дефинира в клас и всеки обект от този клас съдържа отделно копие на тази променлива. От друга страна, използването на локални променливи не се ограничава до обектно ориентирани езици за програмиране. Това е променлива, която може да бъде оценена само в рамките на определен блок от код (например функция, блок цикъл и т.н.), в който е дефинирана. Поради тази причина се казва, че локалните променливи имат локален обхват.
Какво е променлива на инстанцията?
Променливите на инстанцията се използват в обектно ориентирано програмиране за съхраняване на състоянието на всеки обект в клас. Те са известни също като променливи на членове или променливи на полето. Променливите на инстанцията се декларират, без да се използва статичната ключова дума в Java. Стойностите, съхранявани в променливите на екземпляра, са уникални за всеки обект (всеки обект има отделно копие) и съхраняваните в тях стойности представляват състоянието на този обект. Пространството за променлива на екземпляра се разпределя в купчината, когато този обект е разпределен в купчината. Следователно променливите на екземпляра се съхраняват в паметта, докато обектът е жив. Например, цветът на една кола е независим от цвета на друга кола. Така че цветът на автомобилен обект може да се съхранява в променлива на екземпляр. На практика променливите на екземпляра се декларират вътре в класове и извън методи. Обикновено,променливите на инстанцията са декларирани като частни, така че те могат да бъдат достъпни само в рамките на класа, който е деклариран.
Какво е локална променлива?
Локалните променливи са променливи с локален обхват и се декларират в рамките на определен кодов блок. Локалните променливи могат да се разглеждат като променливи, които се използват от метод за съхраняване на временното му състояние. Обхватът на локална променлива се определя, като се използва местоположението, което променливата е декларирана, и за тази цел не се използват специални ключови думи. Обикновено достъпът до локална променлива е ограничен в рамките на кодовия блок, който е деклариран (т.е. между отварящата и затварящата скоби на този кодов блок). Локалните променливи обикновено се съхраняват в стека на повикванията. Това би позволило рекурсивните извиквания на функции да поддържат свои собствени копия на локалните променливи, които да се съхраняват в отделни адресни пространства в паметта. Когато методът завърши изпълнението си, информацията за този метод се изскача от стека на повикванията, като също така унищожава локалните променливи, които са били съхранени.
Каква е разликата между променливата на инстанцията и локалната променлива?
Променливите на инстанцията се декларират в класове извън методи и те съхраняват състоянието на обект, докато локалните променливи се декларират в кодови блокове и се използват за съхраняване на състоянието на метод. Екземплярната променлива е активна, докато обектът, който съдържа тази променлива, е жив, докато локалната променлива е активна по време на изпълнението на този метод / кодов блок. Променливата на екземпляра (която е обявена за публична) може да бъде достъпна в класа, докато локалната променлива може да бъде достъпна само в кодовия блок, който е деклариран. Използването на променливи на екземпляра е ограничено само до обектно ориентирано програмиране, докато локалните променливи нямат такова ограничение.