Różnica między zmienną instancji a zmienną lokalną

Zmienna instancji a zmienna lokalna

Zmienna instancji jest rodzajem zmiennej występującej w programowaniu obiektowym. Jest to zmienna zdefiniowana w klasie, a każdy obiekt tej klasy zawiera osobną kopię tej zmiennej. Z drugiej strony użycie zmiennych lokalnych nie ogranicza się do obiektowych języków programowania. Jest to zmienna, którą można ocenić tylko w obrębie określonego bloku kodu (np. Funkcji, bloku pętli itp.), W którym jest zdefiniowana. Z tego powodu mówi się, że zmienne lokalne mają zasięg lokalny.

Co to jest zmienna instancji?

Zmienne instancji są używane w programowaniu obiektowym do przechowywania stanu każdego obiektu w klasie. Są one również znane jako zmienne składowe lub zmienne polowe. Zmienne instancji są deklarowane bez użycia słowa kluczowego static w Javie. Wartości przechowywane w zmiennych instancji są unikalne dla każdego obiektu (każdy obiekt ma osobną kopię), a przechowywane w nich wartości reprezentują stan tego obiektu. Miejsce na zmienną instancji jest przydzielane na stercie, gdy ten obiekt jest przydzielany na stercie. Dlatego zmienne instancji są przechowywane w pamięci tak długo, jak obiekt jest aktywny. Na przykład kolor jednego samochodu jest niezależny od koloru innego samochodu. Kolor obiektu samochodowego można zapisać w zmiennej instancji. W praktyce zmienne instancji deklarowane są wewnątrz klas, a metody zewnętrzne. Zwykle zmienne instancji są zadeklarowane jako prywatne, aby można było uzyskać do nich dostęp tylko w klasie, która jest zadeklarowana.

Co to jest zmienna lokalna?

Zmienne lokalne to zmienne o zasięgu lokalnym, które są deklarowane w określonym bloku kodu. Zmienne lokalne można postrzegać jako zmienne używane przez metodę do przechowywania jej stanu tymczasowego. Zakres zmiennej lokalnej jest określany na podstawie lokalizacji, w której zmienna jest deklarowana, a do tego celu nie są używane specjalne słowa kluczowe. Zwykle dostęp do zmiennej lokalnej jest ograniczony w zadeklarowanym bloku kodu (tj. Między nawiasami otwierającymi i zamykającymi tego bloku kodu). Zmienne lokalne są zwykle przechowywane w stosie wywołań. Umożliwiłoby to rekurencyjnym wywołaniom funkcji zachowanie własnych kopii zmiennych lokalnych do przechowywania w osobnych przestrzeniach adresowych pamięci. Gdy metoda zakończy wykonywanie, informacje o tej metodzie są wyskakujące ze stosu wywołań, niszcząc również przechowywane lokalne zmienne.

Jaka jest różnica między zmienną instancji a zmienną lokalną?

Zmienne instancji są deklarowane w ramach klas poza metodami i przechowują stan obiektu, podczas gdy zmienne lokalne są deklarowane w blokach kodu i są używane do przechowywania stanu metody. Zmienna instancji jest aktywna, dopóki obiekt zawierający tę zmienną jest aktywny, podczas gdy zmienna lokalna jest aktywna podczas wykonywania tej metody / bloku kodu. Dostęp do zmiennej instancji (która jest zadeklarowana jako publiczna) można uzyskać w ramach klasy, podczas gdy do zmiennej lokalnej można uzyskać dostęp tylko w zadeklarowanym bloku kodu. Wykorzystanie zmiennych instancji jest ograniczone tylko do programowania obiektowego, podczas gdy zmienne lokalne nie mają takiego ograniczenia.