Variables d'objet et variables de classe en Java
Je suis dans le processus de l'apprentissage de Java et je ne comprends pas la différence entre l'Objet des Variables et la Variable de Classe. Tout ce que je sais, c'est que pour être une Variable de Classe, vous devez le déclarer d'abord avec l'instruction statique.
Merci!
source d'informationauteur foobar5512 | 2011-12-24
Vous devez vous connecter pour publier un commentaire.
En Java (et en programmation orientée objet en général) les objets ont deux sortes de champs(variables).
Variables d'Instance(ou d'un objet variable) sont des champs qui appartiennent à une instance particulière d'un objet.
Variables statiques (ou variable de classe) sont communs à toutes les instances de la même classe.
Voici un exemple:
utilisation:
La différence entre une variable statique ou d'une variable de classe et une variable d'instance ou une variable objet est assez simple. Chaque objet que vous créez possède sa propre copie de ses propres variables d'instance. Où comme s'il n'y est une variable statique dans la classe alors qu'un seul exemplaire de variable statique pour tous les objets. Par exemple
Si vous avez créé 2 jellybean des objets que vous aimeriez avoir deux variables pour la Couleur parce que chaque jellybean a sa propre variable pour la couleur. Et 1 variable pour totalNumberOfJellyBeans parce que les deux jellyBean objets utilisent cette variable de classe.
Une variable objet est l'état dépend d'une instance spécifique d'une classe, alors qu'une variable de classe est accessible dans le monde entier par le biais de la classe elle-même. Que peut-être un peu floue, alors voici quelques exemples:
Dans cette classe,
calories
est une variable de classe. Dans tout autre morceau de code, vous pouvez obtenir le nombre de calories dans toute sorte de muffin en appelantMuffin.calories
. Dans ce cas, lefinal
mot-clé est également utilisé pour faire le nombre de calories constant.Dans la même classe, nous avons une variable objet,
flavor
. Cela dépend de l'instance de la classe, et est définie dans le constructeur.Alors maintenant, vous pouvez accéder à ce muffin saveur en appelant
myMuffin.flavor
. Remarquez comment nous devons instancier unMuffin
objet avant de pouvoir accéder à sesflavor
.Changer statique (classe) variables
L'exemple ci-dessus est un peu exagéré, puisque différents types de muffins n'ait pas le même nombre de calories. Ils sont utiles pour les constantes, mais voici un cas où la valeur de la variable statique de changements:
Dans le deuxième exemple, nous avons besoin d'un numéro d'identification unique pour chaque muffin nous créer, afin que nous puissions avoir une variable statique qui est incrémenté chaque fois qu'un
Muffin
est instancié. Lestatic
mot-clé qui fait la valeur denext_id
persistent à travers chaque appel au constructeur de la classe, de sorte que leid
différents, et continuer à augmenter pour tous les nouveaux muffin.Disons que vous avez un modèle de la voiture
ToyotaYaris
en qui vous pouvez avoir une variable appeléemaxSpeed
. Toutes les voitures fabriquées avec ce plan (ses instances) auront la même vitesse maximale, de sorte que les variables qui doivent appartenir au modèle, et pas les voitures individuelles. Si lemaxSpeed
changements dans le plan, de sorte qu'il sera le changement dans toutes les voitures qu'il produit.Cependant, sur chaque voiture, vous pourriez avoir une autre variable appelée
speed
. Cette variable ne peut pas appartenir à le plan, parce que chaque voiture peut être conduite à des vitesses différentes, indépendamment les uns des autres, de sorte que vous besoin de cette variable d'appartenir à chaque instance spécifique deToyotaYaris
.Donc:
Une variable objet ou membre de l'instance appartient à une instance spécifique d'une classe. C'est-à-dire que chaque cas a sa propre copie de ce morceau de données. Une variable de classe ou membre statique est partagée par toutes les instances de la classe. C'est-à-dire qu'il existe une seule copie de ce morceau de données, peu importe combien d'instances de classe.