Jede Variable oder Methode, die statisch deklariert wurde, kann unabhängig von einer Klasseninstanz verwendet werden.
Experiment
Versuchen Sie, diese Klasse zu kompilieren:
%Vor% Dies ist erfolgreich, weil die Variable INT_VALUE
als statisch deklariert ist (wie die Methode main
).
Versuchen Sie, diese Klasse zusammen mit der vorherigen Klasse zu kompilieren:
%Vor% Dies ist erfolgreich, weil die Variable INT_VALUE
sowohl statisch als auch öffentlich ist. Ohne zu sehr ins Detail zu gehen, ist es normalerweise gut, Variablen nicht zu veröffentlichen.
Versuchen Sie, diese Klasse zu kompilieren:
%Vor%Dies wird nicht kompiliert, weil es keine Objektinstanz von der Klasse HelloWorld gibt. Damit dieses Programm kompiliert (und ausgeführt) wird, müsste es geändert werden:
%Vor% Dies erstellt keine Instanz von HelloWorld
, weil main
eine statische Methode ist. Statische Methoden (und statische Felder) beziehen sich auf den -Typ und nicht auf eine bestimmte Instanz des Typs.
Weitere Informationen finden Sie auf der Seite Java-Tutorial zu statischen / Instanz-Mitgliedern zusammen mit dieser Stack Overflow-Frage (unter anderem).
Eine mehr OO-Version würde aussehen:
%Vor%was ich vermute, ist mehr wie das, was Sie erwartet haben. Es instanziiert eine neue HelloWord-Klasseninstanz und fordert sie dann auf, etwas zu tun. Zum Lernen von OO finde ich das intuitiver und (aus Gründen, auf die ich hier nicht eingehen werde), scheue ich mich vor statischen Methoden, wenn ich meine eigenen Klassen schreibe (kurz - Threading - Probleme / geteilter Zustand etc.)
Statische Methoden wie main () können ohne ein Objekt verwendet werden.
Ihr Build-System bindet den Einstiegspunkt des Programms an die "Haupt" -Routine der Klasse. Nur eine Klasse kann eine "Haupt" -Routine haben.
"main" ist statisch. Das bedeutet, dass es sich um eine "Klassenmethode" handelt. Es funktioniert ohne eine Instanz.
Tags und Links java