Привет всему сообществу. Я написал этот POST , чтобы улучшить понимание переменных класса и экземпляра . Я поискал в Интернете, и что мне стало ясно, так это то, что:
- Переменная класса — это когда она записывается как static , которая объявляется в полях как static в конструкторах и методах. Кроме того, константы класса будут static final .
- Переменная экземпляра не несет ничего особенного, просто она создается как объект, этот объект создается и используется в методе в указанном порядке.
Я не знаю, правильно ли я истолковал это, или мне нужно что-то еще знать или понять, и правильно ли я истолковал то, что написал раньше.
Когда вы объявляете статические переменные в классе, вы можете получить к ним доступ из любого места, не создавая из него объект. Например:
Вы вызываете статические переменные с именем класса и точкой, а также с именем переменной или функции. Чтобы получить доступ к переменным объекта (нестатическим), мы должны создать экземпляр объекта и получить доступ к его переменной или функции.
Во-первых, необходимо отметить, что спецификация языка Java довольно точна в используемых терминах, и, в частности, не используется слово член . Мы всегда говорим о переменных , принадлежащих классу, объекту или методу.
Обращаясь к спецификации , мы находим следующее:
Переменные класса принадлежат определению класса. Чтобы определить его, ключевое слово используется
static
в качестве модификатора.Эта переменная
total
является общей для всех создаваемых объектов типаCar
:Каждый раз, когда я создаю объект типа, я
Car
увеличиваю переменнуюtotal
(количество созданных объектов) на единицу, поскольку переменная является общей для всех объектов (поскольку она принадлежит определению класса), тогда как в принципе можно было бы думать о классе переменных как 'глобальная переменная. Поскольку определение переменной принадлежит классу, к нему можно получить доступ без использования ссылки на объект, так что это абсолютно правильно:мы обращаемся к переменной через имя класса, а не через ссылку на объект.
Переменные экземпляра — это те, которые объявлены в классе, но без зарезервированного слова
static
В отличие от переменных класса, право собственности и ответственность за них принадлежит каждому создаваемому объекту. Например:
Другими словами, за переменные экземпляра отвечает каждый экземпляр класса, поэтому у каждого экземпляра есть своя копия переменной, и изменение значения переменной экземпляра в объекте
libro1
не изменит значение той же самой переменной. то же имя в объектеlibro2
В этом видео объясняются переменные класса и переменные экземпляра: https://www.youtube.com/watch?v=SLyl1OO7CzQ .