1 - Généralités
Dans le tutorial sur la création de classes nous avions vu que pour pouvoir utiliser une méthode d'une classe il fallait d'abord créer un objet de cette classe :
Message msg = new Message() permet d'instancier un objet de la classe Message. Ensuite seulement nous pouvons appeler la méthode publique Affiche de Message par : msg.Affiche().
La syntaxe dans ce cas est : NomDeLobjet.NomDeLaMéthode ().
Qualifer la méthode Affiche de static va permettre de l'utiliser en dehors de toute création d'objet de la classe Message. La syntaxe devient alors : NomDeLaClasse.NomDeLaMéthode().
Dans cet exemple "Hello word" est affiché par un simple Message.Affiche() dans Main.
Voilà pour les généralités. Quelques précisions maintenant :
2 - Les champs statiques
- Un champ statique existe même si aucun objet de la classe n'a été créé. Ainsi dans l'exemple ci-dessous Main appelle le champs statique msg alors qu'aucun objet Message n'existe :
- Il est accessible avec la syntaxe NomDeLaClasse.NomDuChamp.
- Il peut être modifié ou utilisé par les méthodes de la ou des classes. Dans l'exemple ci-dessous Message.msg="Coucou" de la méthode Main est valide :
3 - Les méthodes statiques
- Une méthode statique existe en dehors de la création d'un objet de la classe.
- Elle est appelée par la syntaxe NomDeLaClasse.NomDeLaMéthode() mais ne peut être appelée par NomDeLobjetDeLaClasse.NomDeLaMéthode(). Dans l'exemple ci-dessous :
- Message UnMessage = new Message();
UnMessage.Affiche()- génére une erreur de compilation :
- Elle n'accède qu'aux champs statiques de sa classe. Le code ci-dessous génére une erreur de compilation :
- Elle ne peut appeler qu'une méthode statique (de sa classe ou d'une autre classe). Elle peut par contre être appelée par une méthode non statique de sa classe.
4 - Les Propriétés statiques
- Une propriété statique existe en dehors de la création d'un objet de la classe.
- Elle est appelée par la syntaxe NomDeLaClasse.NomDeLaPropriété mais ne peut être appelée par NomDeLobjetDeLaClasse.NomDeLaPropriété.
- Elle n'accède qu'aux champs statiques de sa classe. Dans le code ci-dessous PropriétéStatique accède à _propriétéstatique car le champ est qualifié de static :
5 - Les classes statiques (nouveauté C# 2)
- Une classe statique ne peut comporter que des champs et méthodes statiques.
- Elle ne peut servir de classe de base pour l'héritage (nous aborderons cette notion d'héritage dans un autre tutorial).
- Enfin elle ne peut être instanciée. Dans le code ci-après Message UnMessage = new Message() génére une erreur de compilation :
Aucun commentaire:
Enregistrer un commentaire