Мое понимание, как показано ниже, и я не говорю, что это на 100% правильно, я мог бы также ошибиться ..
Переменная является то , что вы заявляете, что может по умолчанию , изменяются и имеют разные значения, но которые также могут быть явно сказал окончательным. В Java это будет:
public class Variables {
List<Object> listVariable; // declared but not assigned
final int aFinalVariableExample = 5; // declared, assigned and said to be final!
Integer foo(List<Object> someOtherObjectListVariable) {
// declare..
Object iAmAlsoAVariable;
// assign a value..
iAmAlsoAVariable = 5;
// change its value..
iAmAlsoAVariable = 8;
someOtherObjectListVariable.add(iAmAlsoAVariable);
return new Integer();
}
}
В общем, переменная - это все, что объявлено и может содержать значения. Метод foo выше возвращает переменную, например. Он возвращает переменную типа Integer, которая содержит адрес памяти нового Integer (); Все остальное, что вы видите выше, также является переменными listVariable, aFinalVariableExample и объясняется здесь:
Поле - это переменная, где область видимости более ясна (или конкретна). Переменная, возвращаемая из области видимости метода foo, не ясна в примере выше, поэтому я бы не назвал ее полем. С другой стороны, iAmAlsoVariable является «локальным» полем, ограниченным областью действия метода foo, а listVariable является «экземпляром» поля, в котором область действия поля (переменной) ограничена областью действия объектов.
Свойство - это поле, к которому можно получить доступ / изменить его. Любое поле, которое предоставляет метод получения / установки, является свойством.
Я не знаю об атрибутах, и я также хотел бы повторить, что я понимаю, что такое переменные, поля и свойства.