Actionscript 3: quelqu'un Peut m'expliquer le concept de statique des variables et des méthodes?
Je suis en train d'apprendre AS3, et je suis un peu confus quant à ce qu'est une variable ou une méthode statique, ou en quoi elle diffère d'une méthode ou une variable sans ce mot-clé. Ce devrait être assez simple de répondre, je pense.
static indique qu'une variable, une constante ou une méthode appartient à la classe à la place des instances de la classe. static variable, une fonction ou une constante peut être consulté sans la création d'une instance de la classe j'.e SomeClass.staticVar. Ils ne sont pas héritées par les sous-classe, et seules les classes (pas d'interfaces) peut avoir des membres statiques. Un static fonction ne peut pas accéder à tout les membres non statiques (des variables, des constantes ou des fonctions de la classe et vous ne pouvez pas utiliser this ou super à l'intérieur d'une fonction statique. Voici un exemple simple.
La dernière ligne n'a pas d'imprimer 11, seuls les ensembles j à 11 😛 merci 🙂 edité le même. Un bon scénario dans lequel vous devez utiliser une variable statique de la fonction/est si vous êtes de la génération d'un identifiant unique pour une instance d'une classe. Puisque la variable appartient à la classe vous pouvez appeler une méthode statique (qui s'incrémenter le compteur) et à l'attribuer à l'instance de la classe (le plus probable dans le constructeur). C'est comment j'ai d'abord appris sur eux 🙂 Et l'usage très fréquent du mot-clé static est en "Modèle de Conception Singleton'. en.wikipedia.org/wiki/Singleton_pattern
Une variable ou une méthode statique est partagée par toutes les instances d'une classe. C'est un assez décent définition, mais peut-être pas la rendre aussi claire comme un exemple...
Donc dans une classe Foo peut-être que vous voulez avoir une variable statique fooCounter de garder une trace de la façon dont beaucoup de Foo's ont été instanciés. (Nous allons simplement ignorer la sécurité des threads pour l'instant).
De sorte que chaque fois que vous faites une new Foo() dans l'exemple ci-dessus, le compteur est incrémenté. Donc, à tout moment, si nous voulons savoir combien de Foos'il y a, nous ne demandons pas un exemple pour la valeur du compteur, nous demandons à la Foo classe depuis que l'information est "statique" et s'applique à l'ensemble de laFoo classe.
var one:Foo=newFoo();var two:Foo=newFoo();
trace("we have this many Foos: "+Foo.howManyFoos());//should return 2
Flash n'a pas de problèmes de threading en raison de son modèle de single-threaded.
static
indique qu'une variable, une constante ou une méthode appartient à la classe à la place des instances de la classe.static
variable, une fonction ou une constante peut être consulté sans la création d'une instance de la classe j'.eSomeClass.staticVar
. Ils ne sont pas héritées par les sous-classe, et seules les classes (pas d'interfaces) peut avoir des membres statiques.Un
static
fonction ne peut pas accéder à tout les membres non statiques (des variables, des constantes ou des fonctions de la classe et vous ne pouvez pas utiliserthis
ousuper
à l'intérieur d'une fonction statique. Voici un exemple simple.Dans le TestStatic, les variables et les fonctions sont accessibles sans la création d'une instance de SomeClass.
merci 🙂 edité le même.
Un bon scénario dans lequel vous devez utiliser une variable statique de la fonction/est si vous êtes de la génération d'un identifiant unique pour une instance d'une classe. Puisque la variable appartient à la classe vous pouvez appeler une méthode statique (qui s'incrémenter le compteur) et à l'attribuer à l'instance de la classe (le plus probable dans le constructeur). C'est comment j'ai d'abord appris sur eux 🙂
Et l'usage très fréquent du mot-clé static est en "Modèle de Conception Singleton'. en.wikipedia.org/wiki/Singleton_pattern
OriginalL'auteur bhups
Une variable ou une méthode statique est partagée par toutes les instances d'une classe. C'est un assez décent définition, mais peut-être pas la rendre aussi claire comme un exemple...
Donc dans une classe
Foo
peut-être que vous voulez avoir une variable statiquefooCounter
de garder une trace de la façon dont beaucoup deFoo
's ont été instanciés. (Nous allons simplement ignorer la sécurité des threads pour l'instant).De sorte que chaque fois que vous faites une
new Foo()
dans l'exemple ci-dessus, le compteur est incrémenté. Donc, à tout moment, si nous voulons savoir combien deFoo
s'il y a, nous ne demandons pas un exemple pour la valeur du compteur, nous demandons à laFoo
classe depuis que l'information est "statique" et s'applique à l'ensemble de laFoo
classe.OriginalL'auteur dustmachine
Une autre chose est statique des fonctions ne pouvait accéder à des variables statiques, et ne pouvait pas être remplacer, voir "caché".
OriginalL'auteur Gal Margalit