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

StackOverflow https://stackoverflow.com/questions/2080150

Question

Je concept de variables statiques, mais quels sont les avantages des méthodes statiques dans une classe. Je travaille sur certains projets, mais je ne faisais pas une méthode statique. Chaque fois que je dois appeler une méthode d'une classe, je crée un objet de cette classe et appelle la méthode souhaitée.

Q: Variable statique dans une méthode détient sa valeur, même si la méthode est exécutée mais accessible uniquement dans sa méthode contenant, mais quelle est la meilleure définition de la méthode statique?

Q: appelle la méthode statique sans créer objet de cette classe est le seul avantage de la méthode statique?

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

Merci

Était-ce utile?

La solution

Votre description d'une variable statique est plus approprié à celui qu'on trouve dans C. Le concept d'une variable statique en termes orientés objet est différent sur le plan conceptuel. Je dessine d'expérience Java ici. méthodes et champs statiques sont utiles quand ils ne font pas partie conceptuelle à une instance de quelque chose.

Considérons une classe de mathématiques qui contient des valeurs communes comme Pi ou e, et quelques fonctions utiles comme le péché et cos. Il n'a vraiment pas de sens pour créer des instances distinctes pour utiliser ce type de fonctionnalité, donc ils sont mieux que statics:

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

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

Dans les langues OO (encore une fois, dans une perspective Java) fonctions, ou mieux connu sous le nom des méthodes, ne peuvent pas 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 statique dans C

Autres conseils

Les méthodes statiques ne passent pas « ce » pointeur vers un objet, de sorte qu'ils ne peuvent pas faire référence à des variables ou des méthodes non statiques, mais peuvent par conséquent être plus efficace lors de l'exécution (moins de paramètres et pas de frais généraux pour créer et détruire un objet).

Ils peuvent être utilisés à des méthodes de cohésion du groupe dans une seule classe, ou d'agir sur les objets de leur classe, comme dans le modèle d'usine.

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 est plus logique que:

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

Comme la méthode multiply() ne pas utiliser toutes les variables de classe et en tant que telle ne nécessite pas une instance de Number.

Pour l'essentiel, les méthodes statiques vous permettent d'écrire du code de procédure dans un langage orienté objet. Il vous permet d'appeler des méthodes sans avoir à créer un objet en premier.

Le seul moment où vous souhaitez utiliser une méthode statique dans une classe est quand une méthode donnée ne nécessite pas une instance d'une classe à créer. Cela pourrait être en essayant de retourner une source de données partagée (par exemple Singleton) ou l'exécution d'une opération qui ne modifie pas l'état interne de l'objet (String.format par exemple).

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

Les variables statiques et des méthodes statiques sont liés à la classe, et non pas une instance de la classe.

Les méthodes statiques ne doivent pas contenir un « état ». Tout ce qui touche à un état, doit être lié à un objet instancié, et non la classe.

Un usage courant des méthodes statiques est dans l'idiome du constructeur nommé. Voir: http://www.parashift.com/c++- faq-lite / ctors.html # faq-10.8 .

Méthodes statiques en PHP :

Peut être appelé sans créer un objet de classe.

Ne peut faire appel à des méthodes statiques et fonction.

Variable statique est utilisée lorsque vous souhaitez partager quelques informations entre différents objets de la variable class.As est partagée chaque objet peut mettre à jour et la valeur actualisée disponible pour tous les autres objets aussi bien. Comme variable statique peut être partagée, ceux-ci sont souvent appelés comme variable de classe.

éléments statiques sont accessibles à partir de tout contexte (à savoir ne importe où dans votre script), de sorte que vous pouvez accéder à ces méthodes sans avoir besoin de passer une instance de la classe d'un objet à.

Les éléments statiques sont disponibles dans tous les cas d'une classe, vous pouvez donc définir les valeurs que vous souhaitez être disponible à tous les membres d'un type.

pour href="http://phpduck.com/php-static-methods-and-properties/" plus un lien !

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top