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