Ich habe gerade den Text gelesen, der mir in meinem Lehrbuch gegeben wurde, und ich bin mir nicht sicher, ob ich verstehe, was er sagt. Es sagt mir im Grunde, dass statische Methoden oder Klassenmethoden das Schlüsselwort "modifier" static enthalten. Aber ich weiß nicht wirklich was das bedeutet?
Könnte mir bitte jemand in wirklich einfachen Worten erklären, was statische oder Klassenmethoden sind?
Könnte ich auch eine einfache Erklärung zu den Instanzmethoden erhalten?
Das geben sie mir im Lehrbuch:
Das Vorhandensein oder Fehlen des statischen Modifikators hat wichtige praktische Auswirkungen. Eine öffentliche Klassenmethode kann aufgerufen und ausgeführt werden, sobald Java die Definition der Klasse verarbeitet, zu der sie gehört. Dies ist bei einer Instanzmethode nicht der Fall. Bevor eine öffentliche Instanzmethode aufgerufen und ausgeführt werden kann, muss eine Instanz der Klasse erstellt werden, zu der sie gehört. Um eine öffentliche Klassenmethode zu verwenden, benötigen Sie nur die Klasse. Bevor Sie jedoch eine öffentliche Instanzmethode verwenden können, müssen Sie über eine Instanz der Klasse verfügen.
Die Art und Weise, wie eine statische Methode innerhalb der Definition einer anderen Methode aufgerufen wird, hängt davon ab, ob die beiden Methoden zur selben Klasse gehören oder nicht. Im obigen Beispiel sind Fakultät und Haupt beide Methoden der MainClass-Klasse. Infolgedessen verweist der Aufruf von Fakultät in der Definition von main einfach auf den Methodennamen "Fakultät".
quelle
static
(eine Klasse, eine Methode oder ein Feld) nicht wirklich zu irgendetwas gehört, sondern nur aus organisatorischen Gründen in der Klasse hängt.Methoden und Variablen, die nicht als statisch deklariert sind, werden als Instanzmethoden und Instanzvariablen bezeichnet. Um auf Instanzmethoden und -variablen zu verweisen, müssen Sie zuerst die Klasse instanziieren. Dies bedeutet, dass Sie zuerst ein Objekt dieser Klasse erstellen müssen. Für statische Aufladung müssen Sie die Klasse nicht instanziieren. Sie können mit dem Punkt auf die Methoden und Variablen mit dem Klassennamen zugreifen welches ist in (.)
beispielsweise:
Für nicht statische Methoden müssen Sie die Klasse instanziieren.
quelle
Statische Methoden, Variablen gehören zur gesamten Klasse, nicht nur zu einer Objektinstanz. Eine statische Methode, Variable, ist der Klasse als Ganzes zugeordnet und nicht bestimmten Instanzen einer Klasse. Jedes Objekt teilt eine gemeinsame Kopie der statischen Methoden und Variablen. Es gibt nur eine Kopie pro Klasse, unabhängig davon, wie viele Objekte daraus erstellt werden.
quelle
Unterschied zwischen statischen Methoden und Instanzmethoden
Instanzmethoden sind Methoden, bei denen ein Objekt seiner Klasse erstellt werden muss, bevor es aufgerufen werden kann. Statische Methoden sind die Methoden in Java, die aufgerufen werden können, ohne ein Klassenobjekt zu erstellen.
Die statische Methode wird mit dem Schlüsselwort static deklariert. Die Instanzmethode enthält kein statisches Schlüsselwort.
Statische Methode bedeutet, dass sie als einzelne Kopie für eine Klasse vorhanden ist. Instanzmethoden existieren jedoch als mehrere Kopien, abhängig von der Anzahl der für diese Klasse erstellten Instanzen.
Statische Methoden können mithilfe der Klassenreferenz aufgerufen werden. Instanz- oder nicht statische Methoden werden mithilfe der Objektreferenz aufgerufen.
Statische Methoden können nicht direkt auf Instanzmethoden und Instanzvariablen zugreifen. Die Instanzmethode kann direkt auf statische Variablen und statische Methoden zugreifen.
Referenz: geeksforgeeks
quelle
Instanzmethoden => auf bestimmte Instanz einer bestimmten Klasse aufgerufen. Die Methode möchte wissen, für welche Klasse sie aufgerufen wurde. So wie es passiert, gibt es einen unsichtbaren Parameter namens 'this'. Innerhalb von 'this' haben wir Mitglieder der Instanzklasse, die bereits mit Werten festgelegt wurden. 'Dies' ist keine Variable. Es ist ein Wert, den Sie nicht ändern können, und der Wert bezieht sich auf den Empfänger des Anrufs. Beispiel: Sie rufen Reparaturpersonal an (Instanzmethode), um Ihr Fernsehgerät (aktuelles Programm) zu reparieren. Er kommt mit Werkzeugen ('dieser' Parameter). Er wird mit speziellen Werkzeugen geliefert, die zum Reparieren des Fernsehgeräts benötigt werden, und er kann auch andere Dinge reparieren.
In statischen Methoden => gibt es kein "dies". Beispiel: Der gleiche Mechaniker (statische Methode). Wenn Sie ihn anrufen, müssen Sie angeben, welchen Mechaniker Sie anrufen möchten (z. B. Elektriker). Und er wird kommen und nur Ihren Fernseher reparieren. Aber er hat keine Werkzeuge, um andere Dinge zu reparieren (es gibt keinen 'this'-Parameter).
Statische Methoden sind normalerweise nützlich für Operationen, die keine Daten von einer Instanz der Klasse (von 'this') erfordern und ihren beabsichtigten Zweck ausschließlich mit ihren Argumenten erfüllen können.
quelle
Das Verhalten eines Objekts hängt von den Variablen und Methoden dieser Klasse ab. Wenn wir eine Klasse erstellen, erstellen wir ein Objekt dafür. Für statische Methoden benötigen wir sie nicht, da statische Methoden bedeuten, dass alle Objekte dieselbe Kopie haben, sodass kein Objekt erforderlich ist. z.B:
In der Instanzmethode hat jedes Objekt ein anderes Verhalten, sodass die Methode mithilfe der Objektinstanz aufgerufen werden muss. z.B:
quelle
Wenn der Status einer Methode nicht geändert werden soll oder keine Instanzvariablen verwendet werden.
Sie möchten die Methode ohne Instanz aufrufen.
Wenn es nur mit Argumenten funktioniert, die ihm zur Verfügung gestellt wurden.
Dienstprogrammfunktionen sind ein gutes Beispiel für statische Methoden. dh math.pow (), diese Funktion wird den Status für verschiedene Werte nicht ändern. Es ist also statisch.
quelle
Kurz gesagt, statische Methoden und statische Variablen sind Klassenebene, wobei Instanzmethoden und Instanzvariablen Instanz- oder Objektebene sind.
Dies bedeutet, dass jedes Objekt, wenn eine Instanz oder ein Objekt (unter Verwendung von new ClassName ()) erstellt wird, eine eigene Kopie der Instace-Variablen behält. Wenn Sie fünf verschiedene Objekte derselben Klasse haben, haben Sie fünf verschiedene Kopien der Instanzvariablen. Die statischen Variablen und Methoden sind jedoch für alle fünf Objekte gleich. Wenn Sie etwas Gemeinsames benötigen, das von jedem erstellten Objekt verwendet werden soll, machen Sie es statisch. Wenn Sie eine Methode benötigen, für deren Funktion keine objektspezifischen Daten erforderlich sind, machen Sie sie statisch. Die statische Methode funktioniert nur mit statischen Variablen oder gibt Daten auf der Grundlage übergebener Argumente zurück.
Wenn Sie im obigen Beispiel add () aufrufen als:
In der ersten Klasse gibt add () die Summe der von einem bestimmten Objekt übergebenen Daten zurück. Die statische Methode kann jedoch verwendet werden, um die Summe von jeder Klasse zu erhalten, die nicht unabhängig von einer bestimmten Instanz oder einem bestimmten Objekt ist. Daher können generische Methoden, für deren Funktion nur Argumente erforderlich sind, statisch gemacht werden, um alles trocken zu halten.
quelle
Instanzmethode vs statische Methode
Die Instanzmethode kann direkt auf die Instanzmethoden und Instanzvariablen zugreifen.
Die Instanzmethode kann direkt auf statische Variablen und statische Methoden zugreifen.
Statische Methoden können direkt auf die statischen Variablen und statischen Methoden zugreifen.
Statische Methoden können nicht direkt auf Instanzmethoden und Instanzvariablen zugreifen. Sie müssen einen Verweis auf ein Objekt verwenden. Die statische Methode kann dieses Schlüsselwort nicht verwenden, da es keine Instanz gibt, auf die sich 'this' beziehen kann.
quelle
Der statische Modifikator vor einer Funktion impliziert, dass nur eine Kopie dieser Funktion vorhanden ist. Wenn der statische Modifikator nicht vor der Funktion platziert wird, wird mit jedem Objekt oder jeder Instanz dieser Klasse eine neue Kopie dieser Funktion erstellt. :) Gleiches gilt für Variablen.
quelle