Ma compréhension est comme ci-dessous, et je ne dis pas que c'est 100% correct, je pourrais tout aussi bien me tromper.
Une variable est quelque chose que vous déclarez, qui peut par défaut changer et avoir des valeurs différentes, mais qui peut également être explicitement considérée comme finale. En Java, ce serait:
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();
}
}
Donc, fondamentalement, une variable est tout ce qui est déclaré et peut contenir des valeurs. La méthode foo ci-dessus renvoie une variable par exemple .. Elle renvoie une variable de type Integer qui contient l'adresse mémoire du nouvel Integer (); Tout le reste que vous voyez ci-dessus sont également des variables, listVariable, aFinalVariableExample et expliqué ici:
Un champ est une variable dont la portée est plus claire (ou concrète). La variable retournant de la portée de la méthode foo n'est pas claire dans l'exemple ci-dessus, donc je ne l'appellerais pas un champ. D'autre part, iAmAlsoVariable est un champ "local", limité par la portée de la méthode foo, et listVariable est un champ "instance" où la portée du champ (variable) est limitée par la portée des objets.
Une propriété est un champ accessible / muté. Tout champ qui expose un getter / setter est une propriété.
Je ne connais pas l'attribut et je voudrais également répéter que c'est ma compréhension de ce que sont les variables, les champs et les propriétés.