Разница между class variables
и instance
переменными, это просто вопрос who knows what?
.
An 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
что является ключевым словом для distingush между class variables
и instance variabes
. Переменная объявляется как и другие в определении класса. Но static
ключевое слово сигнализирует, что оно другое.
firstName
, lastName
Являются переменными экземпляра и привязывается к этому примеру бетона
numberOfPersons
привязан к классу, чтобы каждый экземпляр мог получить доступ к этой переменной.
ТЛ; др
Место, где определены переменные, - это определение класса.
Переменные класса известны в / привязаны к уровню класса, то есть каждый конкретный экземпляр имеет доступ к нему. Чтобы определить переменную класса, вы используете ключевое слово static
.
Переменные экземпляра известны только на уровне экземпляра. Вы определяете их без static
ключевого слова.
Дальнейшая документация для Java здесь