62 votes

Quand devrais-je utiliser des méthodes statiques dans une classe et quels sont les avantages?

J'ai le concept de variables statiques, mais quels sont les avantages des méthodes statiques dans une classe. J'ai travaillé sur certains projets, mais je n'ai pas une méthode statique. Chaque fois que j'ai besoin d'appeler une méthode d'une classe, j'ai créer un objet de cette classe et d'appeler la méthode souhaitée.

Q: variable Statique dans une méthode tient c'est la valeur même lors de l'exécution de la méthode, mais accessible seulement dans son contenant de la méthode, mais quelle est la meilleure définition de la méthode statique?

Q: Est l'appel de la méthode statique sans créer d'objet de cette classe est le seul avantage de la méthode statique?

Q: Quelle est la gamme accessible pour la méthode statique?

Merci

62voto

darren Points 8541

Votre description d'une variable statique est plus adaptée à celle trouvée dans C. Le concept d'une variable statique dans l'Objet en termes d'Orienté est conceptuellement différent. Je suis de dessin à partir de Java expérience ici. Les méthodes statiques et les champs sont utiles quand elles sur le plan conceptuel n'appartiennent pas à une instance de quelque chose.

Considérons une classe Math qui contient des valeurs communes comme Pi ou e, et quelques fonctions utiles comme le sin et cos. Il n'a vraiment pas de sens de créer des instances de l'utilisation de ce type de fonctionnalité, ils sont donc mieux que la statique:

// This makes little sense
Math m = new Math();
int answer = m.sin(45);

// This would make more sense
int answer = Math.sin(45);

Dans les langages à objets (encore une fois, à partir d'une perspective Java) fonctions, ou mieux connu sous le nom de méthodes, ne peut avoir des variables locales statiques. Seules les classes peuvent avoir des membres statiques, comme je l'ai dit, ressemblent peu par rapport à l'idée de la statique en C.

16voto

PhilMY Points 1805

Les méthodes statiques ne transmettent pas de pointeur "this" à un objet. Elles ne peuvent donc pas faire référence à des méthodes ou des variables non statiques, mais peuvent par conséquent être plus efficaces au moment de l'exécution (moins de paramètres et pas de temps système pour créer et détruire un objet).

Ils peuvent être utilisés pour regrouper des méthodes cohérentes dans une classe unique ou pour agir sur des objets de leur classe, comme dans le modèle d'usine.

13voto

jmoz Points 984

Syntaxe (php) pour les méthodes statiques:

 <?php
class Number {
    public static function multiply($a, $b) {
        return $a * $b;
    }
}
?>
 

Code client:

 echo Number::multiply(1, 2);
 

Ce qui a plus de sens que:

 $number = new Number();
echo $number->multiply(1, 2);
 

Comme la méthode multiply() n'utilise aucune variable de classe et ne requiert donc pas d'instance de Number .

8voto

David Hodgson Points 2408

Les méthodes statiques vous permettent essentiellement d'écrire du code procédural dans un langage orienté objet. Il vous permet d'appeler des méthodes sans avoir à créer un objet au préalable.

6voto

AndrewMurphy Points 81

Le seul moment où vous souhaitez utiliser une méthode statique dans une classe, c'est quand une méthode ne nécessite pas une instance d'une classe à être créé. Cela peut être lors de la tentative de retour à une source de données partagée (par exemple, un Singleton) ou exécution d'une opération qui ne doit pas modifier l'état interne de l'objet (Chaîne de caractères.format par exemple).

Cette entrée de wikipedia explique les méthodes statiques plutôt bien: http://en.wikipedia.org/wiki/Method_(computer_science)#Static_methods

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X