Der Unterschied zwischen statischen Methoden und Instanzmethoden spiegelt sich hauptsächlich in zwei Aspekten wider:
Beim externen Aufruf statischer Methoden können Sie „class Wenn Sie die Methode „Name“ .Methodenname“ verwenden, können Sie auch die Methode „Objektname.Methodenname“ verwenden. Instanzmethoden verfügen nur über die letztere Methode. Mit anderen Worten: Für den Aufruf statischer Methoden ist keine Erstellung eines Objekts erforderlich.
Wenn statische Methoden auf Mitglieder dieser Klasse zugreifen, dürfen sie nur auf statische Mitglieder (d. h. statische Mitgliedsvariablen und statische Methoden) zugreifen, nicht jedoch auf Instanzmitglieder Für Variablen und Instanzmethoden gilt diese Einschränkung nicht.
Die folgenden Beispiele veranschaulichen diesen Unterschied.
1. Statische Methodeninstanz aufrufen
public class hasStaticMethod{ //定义一个静态方法 public static void callMe(){ System.out.println("This is a static method."); } }
Das folgende Programm verwendet zwei Formen, um statische Methoden aufzurufen.
public class invokeStaticMethod{ public static void main(String args[]){ hasStaticMethod.callMe(); //不创建对象,直接调用静态方法 hasStaticMethod oa = new hasStaticMethod(); //创建一个对象 oa.callMe(); //利用对象来调用静态方法 } }
Das Programm darf statische Methoden zweimal aufrufen. Die Ausgabe des Programms ist wie folgt:
This is a static method.This is a static method.
Es ist erlaubt, statische Methoden aufzurufen, ohne ein Objekt zu erstellen Die Methode von Java, Programmiereraufrufe zu reduzieren, eliminiert die Probleme bei der Verwendung einiger gängiger Methoden und ermöglicht es Programmierern, Methoden auf die herkömmliche Art und Weise zu verwenden, wie Funktionen in der C-Sprache verwendet werden.
2. Beispiel für den Zugriff einer statischen Methode auf Mitgliedsvariablen
class accessMember{ private static int sa; //定义一个静态成员变量 private int ia; //定义一个实例成员变量 //下面定义一个静态方法 static void statMethod(){ int i = 0; //正确,可以有自己的局部变量sa = 10; //正确,静态方法可以使用静态变量 otherStat(); //正确,可以调用静态方法 ia = 20; //错误,不能使用实例变量 insMethod(); //错误,不能调用实例方法 } static void otherStat(){} //下面定义一个实例方法 void insMethod(){ int i = 0; //正确,可以有自己的局部变量 sa = 15; //正确,可以使用静态变量 ia = 30; //正确,可以使用实例变量 statMethod(); //正确,可以调用静态方法 } }
Dieses Beispiel kann tatsächlich in einem Satz zusammengefasst werden: Statische Methoden können nur auf statische Mitglieder zugreifen, und Instanzmethoden können auf statische und Instanzmitglieder zugreifen. Der Grund, warum statische Methoden nicht auf Instanzmitgliedsvariablen zugreifen dürfen, liegt darin, dass Instanzmitgliedsvariablen zu einem bestimmten Objekt gehören und das Objekt nicht unbedingt vorhanden ist, wenn eine statische Methode ausgeführt wird.
Da Instanzmethoden auf Instanzmitgliedsvariablen zugreifen können, darf eine statische Methode, wenn sie Instanzmethoden aufrufen darf, indirekt auch Instanzmitgliedsvariablen verwenden, sodass sie keine Instanzmethoden aufrufen kann. Aus dem gleichen Grund kann das Schlüsselwort this nicht in statischen Methoden verwendet werden. Die Methode
main() ist eine typische statische Methode. Sie folgt auch den Regeln allgemeiner statischer Methoden, sodass sie vom System aufgerufen werden kann, bevor ein Objekt erstellt wird.
Empfohlenes Tutorial: Java-Tutorial
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen statischen Methoden und Instanzmethoden in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!