Wie funktioniert Javas Hello World ohne eine Objektinstanz?

7

Ich bin ein Neuling für Java und ich bin verwirrt über etwas:

Im einfachen Hello-Weltprogramm in Java wird kein Objekt erstellt. Wie funktioniert die Klasse im folgenden Beispiel?

%Vor%     
webkul 09.07.2009, 10:09
quelle

6 Antworten

10

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%     
Dave Jarvis 09.07.2009, 10:18
quelle
14

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).

    
Jon Skeet 09.07.2009 10:10
quelle
9

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.)

    
Brian Agnew 09.07.2009 10:15
quelle
4

Statische Methoden wie main () können ohne ein Objekt verwendet werden.

    
anon 09.07.2009 10:11
quelle
0

Wenn Sie später keine HelloWorld-Methoden verwenden möchten, die nicht statisch sind, müssen Sie in der main-Methode eine Instanz von HelloWorld erstellen (main wird nicht erneut ausgeführt, da es kein Konstruktor ist).

    
usoban 09.07.2009 10:12
quelle
-1

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.

    
Jean-Denis Muys 09.07.2009 10:12
quelle

Tags und Links