Різниця між class variables
і instance
змінними - це просто питанняwho knows what?
.
Відомий instance variable
лише (= прив’язаний ) до конкретного екземпляра - звідси і назва.
public class Person {
private String firstName;
private String lastName;
[...]
}
Визначення класу схоже на креслення для побудови конкретних об’єктів. Можливо, ця точка вас трохи бентежить . Але записуючи це таким чином, кожна змінна буде пов'язана зі своїм конкретним об'єктом: наприклад, у кожної людини є своє перше Ім'я
А class variable
з іншого боку - як видно з назви - відомий кожному члену класу; або технічно: це відомо / пов'язане на рівні класу . Типовий приклад - це лічильник кількості створених вами об'єктів - хоча це дуже проблематичний приклад; але це не має значення на цій ранній стадії.
public class Person {
private String firstName;
private String lastName;
[...]
static int numberOfPersons = 0
}
numberOfPersons
оголошено, static
яке є ключовим словом для розгортання між class variables
і instance variabes
. Змінна оголошується, як і інші, у межах визначення класу. Але static
ключове слово сигналізує, що воно різне.
firstName
, lastName
є змінними екземпляра і пов'язані з цим конкретним екземпляром
numberOfPersons
прив’язаний до класу, щоб кожен екземпляр міг отримати доступ до цієї змінної.
тл; д-р
Місце, де визначаються змінні, - це визначення класу.
Змінні класу відомі на / прив'язуються до рівня класу, тобто кожен конкретний екземпляр має доступ до нього. Для визначення змінної класу ви використовуєте ключове слово static
.
Змінні екземплярів відомі лише на рівні примірника. Ви визначаєте їх без static
ключового слова.
Подальша документація для Java тут