Різниця між 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 тут