Statistiques statiques vs variables d'instance: différence?
Quelle est la différence entre la statique et de la variable d'instance. La phrase suivante est ce que je ne peux pas obtenir:
Dans certains cas, une seule copie d'une variable particulière devrait être partagée par tous les objets d'une classe (ici, une variable statique est utilisé.
Une variable statique représente l'ensemble de la classe info.Tous les objets d'une classe partagent les mêmes données.
J'ai pensé que l'exemple de vars ont été utilisés l'ensemble de la classe tandis que les variables statiques seulement avait portée à l'intérieur de leurs propres méthodes?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Dans le contexte de la classe attributs,
static
a un sens différent. Si vous avez un domaine comme:puis, chaque instance de la classe d'action la même variable, de sorte que si vous changer dans un cas, le changement se reflète dans tous les cas, créés avant ou après le changement.
Ainsi dit, vous pourriez comprendre que ce qui est mauvais dans de nombreux cas, car il peut easiy transformer en un indésirable effets secondaires: modification de l'objet
a
affecte égalementb
et vous pourriez vous demander pourquoib
changé sans raison apparente. De toute façon, il y a des cas où ce comportement est absolument souhaitable:const
ayant toutes les classes ont accès à la même valeur ne ferait pas de mal, car on ne peut changer que. Ils peuvent économiser de la mémoire aussi, si vous avez beaucoup des instances de cette classe. Ce n'est pas sûr simultanées accès, bien.static
de vars est instancié avant le début de votre programme, donc si vous avez trop plusieurs d'entre eux, vous pourrait ralentir le démarrage.Un
static
méthode ne peut accéder àstatic
attributs, mais réfléchir à deux fois avant de les essayer.Règle de base: ne pas utiliser
static
sauf s'il est nécessaire et vous savez ce que vous faites ou que vous déclarez une constante de classe.Dire qu'il y a une classe de test:
Vous pouvez accéder à une variable statique avec son Nom de la classe comme ceci
Dans les deux cas, la sortie sera 1 un est partager par toutes les instances de la classe de test.
tandis que la variable d'instance auront chacun un exemplaire distinct de b (variable d'instance)
Donc
Espoir qui explique votre requête.
Variables de classe ont un seul exemplaire qui est partagée par tous les différents objets d'une classe, alors que chaque objet a sa propre copie personnelle d'une variable d'instance. Ainsi, les variables d'instance à travers les différents objets peuvent avoir des valeurs différentes, alors que les variables de classe à travers les différents objets peuvent avoir qu'une seule valeur.
Variables d'Instance:
Ces variables appartiennent à l'instance d'une classe, donc un objet. Et chaque instance de cette classe (objet) a son propre exemplaire de cette variable. Les modifications apportées à la variable ne reflètent pas dans les autres instances de cette classe.
Variables de classe:
Ces sont également connus en tant que membre statique des variables et il n'y a qu'un seul exemplaire de la variable qui est partagée avec toutes les instances de cette classe. Si des modifications sont apportées à cette variable, toutes les autres instances de voir l'effet de ces changements.
Exemple complet:
Variables d'Instance:
La sortie sera:
Maintenant, modifiez la variable d'instance d'une variable de classe, en la rendant statique:
Variables de classe:
J'ai utilisé non statique des méthodes pour obtenir et définir la valeur de code-Barres pour pouvoir l'appeler à partir de l'objet et non pas à partir de la classe.
La sortie sera la suivante:
Statique(Classe) les variables et les variables d'instance, les deux sont des variables membres, parce qu'ils sont tous deux associés à une classe particulière, mais la différence entre eux est la Classe des variables, une copie qui est partagée par tous les différents objets d'une classe, alors que chaque objet a sa propre copie personnelle d'une variable d'instance. Ainsi, les variables d'instance à travers les différents objets peuvent avoir des valeurs différentes, alors que les variables de classe à travers les différents objets peuvent avoir qu'une seule valeur.
Variables d'Instance contenir des valeurs qui doivent être référencées par plus d'une méthode, constructeur ou de bloquer, ou de parties essentielles de l'état d'un objet qui doit être présent tout au long de la classe. Variable statique ne serait qu'un exemplaire de chaque variable de classe par classe, quel que soit le nombre d'objets créés à partir d'elle.
Je pense que vous pensez que le C/C++ définition du mot-clé static. Là, le mot-clé static a de nombreuses utilisations. En Java, le mot-clé static fonctionnalité est décrite dans votre post. De toute façon, vous pouvez l'essayer pour vous-même:
et de même pour les non variables statiques:
Envisager une classe
MyClass
d'avoir une statique et une non-membre statique:Maintenant, nous allons créer une
main()
pour créer un couple d'instances:Résultat:
Maintenant, vous pouvez voir la valeur de la variable statique imprimé
60
les deux à la fois, comme les deuxobj1
etobj2
se référant à la même variable. Avec la non-statique de la variable, les résultats diffèrent, comme chaque objet lors de sa création conserve sa propre copie de la variable non statique; les changements n'ont pas d'incidence sur l'autre copie de la variable créée par un autre objet.