wake-up-neo.com

Wann sollte ich statische Methoden in einer Klasse verwenden und was sind die Vorteile?

Ich habe ein Konzept für statische Variablen, aber welche Vorteile bieten statische Methoden in einer Klasse? Ich habe an einigen Projekten gearbeitet, aber keine Methode statisch gemacht. Wann immer ich eine Methode einer Klasse aufrufen muss, erstelle ich ein Objekt dieser Klasse und rufe die gewünschte Methode auf.

F: Statische Variable in einer Methode enthält ihren Wert, auch wenn die Methode ausgeführt wird, aber nur in der enthaltenen Methode verfügbar ist. Was ist die beste Definition für statische Methode?

F: Ist das Aufrufen der statischen Methode ohne das Erstellen eines Objekts dieser Klasse der einzige Vorteil der statischen Methode?

F: Welcher Bereich ist für statische Methoden zugänglich?

Vielen Dank

62
Naveed

Ihre Beschreibung einer statischen Variablen entspricht eher der in C. Das Konzept einer statischen Variablen in objektorientierten Begriffen unterscheidet sich konzeptionell. Ich beziehe mich hier auf Java Erfahrung. Statische Methoden und Felder sind nützlich, wenn sie konzeptionell nicht zu einer Instanz von etwas gehören.

Stellen Sie sich eine Math-Klasse vor, die einige allgemeine Werte wie Pi oder e und einige nützliche Funktionen wie sin und cos enthält. Es ist wirklich nicht sinnvoll, separate Instanzen zu erstellen, um diese Art von Funktionalität zu nutzen. Daher sind sie als Statik besser geeignet:

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

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

In OO languages ​​(wiederum aus einer Java) Perspektive) -Funktionen oder besser bekannt als Methoden, können keine statischen lokalen Variablen verwendet werden. Nur Klassen können statische Member haben. was, wie gesagt, im Vergleich zur Vorstellung von Statik in C wenig Ähnlichkeit hat.

62
D.C.

Statische Methoden übergeben keinen "this" -Zeiger an ein Objekt, sodass sie nicht-statische Variablen oder Methoden nicht referenzieren können, sondern daher zur Laufzeit effizienter sind (weniger Parameter und kein Overhead zum Erstellen und Zerstören eines Objekts).

Sie können verwendet werden, um zusammenhängende Methoden in einer einzelnen Klasse zu gruppieren oder um Objekte ihrer Klasse zu bearbeiten, z. B. im Factory-Muster.

15
PhilMY

Syntax (php) für statische Methoden:

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

Kundencode:

echo Number::multiply(1, 2);

Was ist sinnvoller als:

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

Da die Methode multiply() keine Klassenvariablen verwendet und als solche keine Instanz von Number benötigt.

12
jmoz

Im Wesentlichen können Sie mit statischen Methoden prozeduralen Code in einer objektorientierten Sprache schreiben. Sie können damit Methoden aufrufen, ohne zuerst ein Objekt erstellen zu müssen.

8
David Hodgson

Sie möchten eine statische Methode nur dann in einer Klasse verwenden, wenn für eine bestimmte Methode keine Instanz einer Klasse erstellt werden muss. Dies kann der Fall sein, wenn versucht wird, eine freigegebene Datenquelle (z. B. ein Singleton) zurückzugeben oder eine Operation ausgeführt wird, bei der der interne Status des Objekts nicht geändert wird (z. B. String.format).

Dieser Wikipedia-Eintrag erklärt statische Methoden ziemlich gut: http://en.wikipedia.org/wiki/Method_ (computer_science) #Static_methods

6
AndrewMurphy

Statische Variablen und statische Methoden sind an die Klasse und nicht an eine Instanz der Klasse gebunden.

Statische Methoden sollten keinen "Zustand" enthalten. Alles, was sich auf einen Zustand bezieht, sollte an ein instanziiertes Objekt gebunden sein und nicht an die Klasse.

4
Travis

Statische Methoden in PHP :

Kann aufgerufen werden, ohne ein Klassenobjekt zu erstellen.

Kann nur statische Methoden und Funktionen aufrufen.

2
Ihsanullah khan

Eine gebräuchliche Verwendung statischer Methoden findet sich in der benannten Konstruktor-IDiom. Siehe: http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.8 .

2
Kyle Lutz

auf statische Elemente kann von jedem Kontext aus zugegriffen werden (d. h. von jedem Ort in Ihrem Skript), sodass Sie auf diese Methoden zugreifen können, ohne eine Instanz der Klasse von Objekt zu Objekt übergeben zu müssen.

Statische Elemente sind in jeder Instanz einer Klasse verfügbar, sodass Sie Werte festlegen können, die allen Mitgliedern eines Typs zur Verfügung stehen sollen.

zum weiterlesen ein link !

1
Purushothaman

Statische Variable wird verwendet, wenn Sie einige Informationen zwischen verschiedenen Objekten der Klasse teilen möchten. Wenn Variable geteilt wird, kann jedes Objekt sie aktualisieren und der aktualisierte Wert ist auch für alle anderen Objekte verfügbar. Da statische Variablen gemeinsam genutzt werden können, werden diese häufig als Klassenvariablen bezeichnet.

1
sunny