Czy deklarowanie zmiennej private static varName;
różni się od deklarowania zmiennej private varName;
?
Tak, oba są różne. Pierwsza jest nazywana, class variable
ponieważ ma jedną wartość dla tego, class
podczas gdy druga jest nazywana, instance variable
ponieważ może mieć różne wartości dla różnych instances(Objects)
. Pierwsza jest tworzona tylko raz w jvm, a druga jest tworzona raz na instancję, tzn. Jeśli masz 10 instancji, będziesz mieć 10 różnych private varName;
w jvm.
Czy zadeklarowanie zmiennej jako static
nadaje jej inne specjalne właściwości?
Tak, zmienne statyczne mają inne właściwości niż zwykłe zmienne instancji. Wspomniałem już o kilku i zobaczmy kilka tutaj: class variables
(zmienne instancji, które są zadeklarowane jako statyczne) można uzyskać bezpośrednio za pomocą nazwy klasy, takiej jak ClassName.varName
. Każdy obiekt tej klasy może uzyskiwać dostęp i modyfikować swoją wartość, w przeciwieństwie do zmiennych instancji, do których dostęp mają tylko odpowiednie obiekty. Zmienne klas mogą być używane w metodach statycznych.
Jakie jest zastosowanie a private static variable
w Javie?
Logicznie rzecz biorąc, private static variable
nie różni się od tego public static variable
, że pierwszy daje większą kontrolę. IMO można dosłownie zastąpić public static variable
za private static variable
pomocą metod public static
pobierających i ustawiających.
Jednym z szeroko używanych obszarów private static variable
jest implementacja prostego Singleton
wzorca, w którym będziesz mieć tylko jedną instancję tej klasy na całym świecie. Tutaj static
identyfikator odgrywa kluczową rolę, aby to pojedynczy przypadek jest przystosowany światem zewnętrznym (metody Oczywiście publicznej pochłaniacza statycznych odgrywa również główną rolę).
public class Singleton {
private static Singleton singletonInstance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return Singleton.singletonInstance;
}
}