Объявление переменной private static varName;
отличается от объявления переменной private varName;
?
Да, оба разные. И первый вызывается, class variable
потому что он содержит одно значение для этого, class
тогда как другой вызывается, instance variable
потому что он может содержать разные значения для разных instances(Objects)
. Первый создается только один раз в jvm, а другой создается один раз для каждого экземпляра, т. Е. Если у вас есть 10 экземпляров, то у вас будет 10 разных private varName;
в jvm.
Объявляет ли переменная так же, как static
и другие специальные свойства?
Да, статические переменные получают некоторые свойства, отличные от обычных переменных экземпляра. Я уже упомянул немного, и давайте посмотрим некоторые здесь: class variables
(переменные экземпляра, которые объявлены как статические) могут быть доступны напрямую с помощью имени класса, как ClassName.varName
. И любой объект этого класса может получить доступ и изменить его значение в отличие от переменных экземпляра, доступных только его соответствующим объектам. Переменные класса могут использоваться в статических методах.
Какая польза от private static variable
Java?
Логически, private static variable
ничем не отличается от public static variable
первого, который дает вам больше контроля. ИМО, вы можете буквально заменить public static variable
на private static variable
с помощьюpublic static
методов получения и установки.
Одной из широко используемых областей private static variable
является реализация простого Singleton
шаблона, в котором у вас будет только один экземпляр этого класса во всем мире. Здесь static
идентификатор играет решающую роль, чтобы сделать этот единственный экземпляр доступным для внешнего мира (конечно, публичный статический метод получения также играет основную роль).
public class Singleton {
private static Singleton singletonInstance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return Singleton.singletonInstance;
}
}