Я розумію, як нижче, і я не кажу, що це на 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 - поле "екземпляр", де область поля (змінна) обмежена сферою дії об'єктів.
Властивість - це поле, до якого можна отримати доступ / мутувати. Будь-яке поле, яке виставляє геттер / сетер, є властивістю.
Я не знаю про атрибут, і я також хотів би повторити, що це моє розуміння, що таке змінні, поля та властивості.