Statische Methode kann nicht den Zugriff auf Instanz-member einer Klasse
In Liang 9. Auflage Einführung in die Programmierung mit Java heißt es, "Eine statische Methode kann keine access-Instanz die Mitglieder einer Klasse" (S. 312). Ich sehe auch, warum eine Instanz-member der Klasse zugreifen zu können, müssen Sie eine Methode (die auch statisch sein), aber warum sollte eine Methode zugreifen zu können, müssen Sie eine Instanz-Mitglied? Für mich ist der "Zugang" bedeutet "auf den Punkt-operator." In anderen Worten:
Class myClass = new Class();
myClass.someStaticMethod();
macht Sinn, in Erwägung nachstehender Gründe:
someNonStaticMethod.myClass
oder
someStaticMethod.myClass
nicht. Ist die someNonStaticMethod.myClass syntax erlaubt? Ich glaube nicht, dass ich je gesehen habe, eine solche Formatierung. Wenn es nicht erlaubt ist, warum erwähnen Sie, dass statische Methoden nicht zu den Zugriff auf Instanz-member einer Klasse?
Bitte helfen meine Verwirrung.
-DI
public static void someStaticMethod() { someInstanceMethod(); }
ist ungültig.Übrigens, die bevorzugte Methode zum Zugriff auf eine statische Methode ist, die mit Ihrem Beispiel
Class.someStaticMethod()
, nicht über eine Instanz der Klasse (also Ihre myClass.someStaticMethod();
)Hund Ist myClass.someStaticMethod() überhaupt möglich?
Ja, es ist möglich rufen Sie die statische Methode, die Art und Weise, aber es ist wirklich nur ein "feature" von Java-syntax, die es erlaubt, so zu sein. Dabei kann verwirrend sein, aber, es sieht aus wie ein Instanz - Methode aufrufen, obwohl es das nicht ist und deshalb vermieden werden sollten.
InformationsquelleAutor Digital Impermanence | 2014-12-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zugriff auf eine Instanz Mitglied bedeutet den Zugriff auf ein Feld oder Attribut der Instanz, nicht die Instanz selbst da würde nicht kompilieren. Ein Punkt nicht wörtlich bedeutet "Zugriff" in die genaue Art und Weise Sie denken und ich denke, das ist die Quelle der Verwirrung, die Sie haben. Der Punkt wird verwendet, um den Aufruf einer Methode auf ein bestimmtes Objekt (siehe diese link) oder um auf ein Feld eines Objekts (bzw. der Klasse, wenn das Feld statisch ist).
Angenommen, vorausgesetzt, die Klasse ist wie folgt definiert:
So, in der Methode
foo
können Sie nicht Referenzx
da es ein member BereichMyClass
gebunden ist, um eine Instanz vonMyClass
.Siehe auch Verständnis Klasse Mitglieder zu verstehen, den Unterschied zwischen statischen Mitglieder und Instanz-Mitglieder.
InformationsquelleAutor manouti
Können Sie den Zugriff auf Instanz-Variablen von statischen Methoden.
Können Sie den Zugriff auf Instanz-Variablen von Instanz-Methoden.
Sollten Sie nicht auf statische Variablen von Instanz-Methoden mit
this
.Können Sie immer auf statische Variablen zugreifen. Sie sollten verwenden Sie den Namen der Klasse.
InformationsquelleAutor Francesco Menzani
Eine statische Methode kann nicht beziehen sich auf eine nicht-Statische Instanz-Feld einer Klasse.
Wenn Sie möchten, um zu verstehen, warum: es wird Eine statische Methode kann aufgerufen werden, ohne dass eine Instanz einer Klasse, also einem nicht-statischen würde nicht existieren, jedenfalls, wenn die Methode aufgerufen wird.
InformationsquelleAutor javaHunter
Ist die Rede von diesem:
Der Grund eine statische Methode hat keinen Zugriff auf Instanz-variable ist, weil statische Referenzen der Klasse, die nicht einer bestimmten Instanz der Klasse, damit es keine Instanz-variable zugreifen. Test sind nur vorhanden, wenn
new MyClass
ist jetzt test bestehen wird. Aber wenn ich rufen Sie die statische MethodeMyClass.getTest()
es ist nichttest
Instanz-variable erstellt.InformationsquelleAutor brso05
ist es möglich, den Zugriff auf Instanz-Variablen in static-Methoden durch das erstellen von Objekten
}
InformationsquelleAutor Muli vinod