Domanda

Ho concetto di variabili statiche ma quali sono i vantaggi di metodi statici in una classe. Ho lavorato su alcuni progetti, ma non ho fatto un metodo statico. Ogni volta che ho bisogno di chiamare un metodo di una classe, creo un oggetto di quella classe e chiamare il metodo desiderato.

D: variabile statica in un metodo detiene il suo valore anche quando il metodo viene eseguito, ma accessibile solo nel suo metodo che contiene, ma qual è la migliore definizione di metodo statico?

D: chiama il metodo statico senza creare oggetto di quella classe è l'unico vantaggio del metodo statico?

D: Qual è la gamma accessibile per metodo statico?

Grazie

È stato utile?

Soluzione

La tua descrizione di una variabile statica è più adatta a quello trovato in C. Il concetto di una variabile statica in termini Object Oriented è concettualmente diverso. Sto disegnando per esperienza Java qui. metodi e campi statici sono utili quando concettualmente non appartengono a un'istanza di qualcosa.

Si consideri una classe Math che contiene alcuni valori comuni come Pi o e, e alcune funzioni utili come il peccato e cos. E 'davvero non ha senso per creare istanze separate di utilizzare questo tipo di funzionalità, quindi sono meglio come statica:

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

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

In linguaggi OO (di nuovo, da un punto di vista Java) funzioni, o meglio conosciuta come metodi, non può avere variabili locali statiche. Solo le classi possono avere membri statici, che come ho già detto, somiglia poco rispetto all'idea di statica in C.

Altri suggerimenti

I metodi statici non passano un "questo" puntatore a un oggetto, quindi non possono fare riferimento a variabili o metodi non statici, ma possono pertanto essere più efficiente in fase di esecuzione (meno parametri e nessun sovraccarico di creare e distruggere un oggetto).

Possono essere utilizzati per i metodi di coesione di gruppo in una singola classe, o per agire su oggetti della loro classe, come nel modello di fabbrica.

Syntax (PHP) per i metodi statici:

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

Codice cliente:

echo Number::multiply(1, 2);

Il che rende più senso che:

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

Come metodo multiply() non utilizza variabili di classe e come tale non richiede un'istanza di Number.

In sostanza, metodi statici permettono di scrivere codice procedurale in un linguaggio orientato agli oggetti. Esso consente di chiamare i metodi, senza dover creare un oggetto prima.

L'unica volta che si desidera utilizzare un metodo statico in una classe è quando un determinato metodo non richiede un'istanza di una classe da creare. Questo potrebbe essere quando si cerca di restituire un'origine dati condivisa (ad esempio un Singleton) o eseguire un'operazione che non modifica lo stato interno dell'oggetto (String.Format per esempio).

Questa voce di Wikipedia spiega i metodi statici abbastanza bene: http: //en.wikipedia. org / wiki / Method_ (computer_science) #Static_methods

Le variabili statiche e metodi statici sono legati alla classe, e non un'istanza della classe.

I metodi statici non devono contenere uno "stato". Tutto ciò che riguarda uno stato, deve essere associato a un oggetto istanziato, e non la classe.

Un uso comune di metodi statici è nell'idioma costruttore di nome. Vedere: http://www.parashift.com/c++- faq-lite / ctors.html # faq-10.8 .

metodi statici in PHP :

Può essere chiamato senza creare un oggetto di classe.

Può chiamare solo su metodi e funzione statica.

variabile statica viene utilizzata quando si desidera condividere alcune informazioni tra i diversi oggetti della variabile class.As è condiviso ogni oggetto può aggiornarlo e il valore aggiornato sia disponibile per tutti gli altri oggetti pure. Come variabile statica può essere condiviso, questi sono spesso chiamati come variabile di classe.

elementi statici sono accessibili da qualsiasi contesto (vale a dire in qualsiasi punto dello script), in modo da poter accedere a questi metodi senza bisogno di passare un'istanza della classe da un oggetto all'altro.

Elementi statici sono disponibili in ogni istanza di una classe, in modo da poter impostare valori che si desidera di essere a disposizione di tutti i membri di un tipo.

un link !

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top