Warum kann ich von der Hauptmethode auf eine private Variable zugreifen?

9
%Vor%

Hallo alle!  Ich habe eine einfache Frage ... WARUM kann ich eine private Variable von der Hauptmethode erreichen? Ich weiß, ich bin in der umschließenden Klasse, aber es ist wichtig. Ich glaubte, dass der Hauptteil NICHT Teil der Klasse ist, die ihn enthält ... Dann würde ich kein privates Mitglied erreichen, aber ich kann ... WARUM? Bitte helfen Sie ... thx

    
Karoly 16.01.2011, 19:21
quelle

7 Antworten

2

Main ist ein Teil deiner Klasse, du hast es in deiner Klasse deklariert :) Was main nicht ist, ist Teil Ihres Objekts, es wird kein Teil der Objekte sein, die Sie aus der Klasse erstellen, aber es ist immer noch Teil der Klasse. Dies ist für jede statische Funktion korrekt, da main nur eine normale statische Funktion ist, die das Framework nach der Ausführung des Programms suchen soll.

/ Viktor

    
Viktor 16.01.2011, 19:25
quelle
10

Klassen können auf die privaten Instanzvariablen von (anderen) Objekten desselben Typs zugreifen.

Folgendes ist auch möglich

%Vor%

Sie könnten argumentieren, ob dies wünschenswert ist oder nicht, aber es ist nur eine Lebensregel, dass die JLS dies als legal bezeichnet hat.

    
Arjan Tijms 16.01.2011 19:31
quelle
2

Die Methode main befindet sich in der Klasse Ferrari und kann daher auf private Variablen zugreifen, selbst wenn sie statisch ist.

    
Femaref 16.01.2011 19:24
quelle
1

Nun, main() ist Teil der enthaltenden Klasse. Tatsächlich ist main() genau wie jede andere Methode, außer dass Sie die JVM starten und ihr mitteilen können, dass sie die Methode main() einer Klasse über die Befehlszeile ausführen soll.

    
biziclop 16.01.2011 19:24
quelle
1

Solange sich die private Variable in derselben Klasse wie die Methode main () befindet, hat die Methode main () Zugriff darauf. Im Allgemeinen haben sogar statische Methoden Zugriff auf private Felder von Instanzen derselben Klasse.

    
jk. 16.01.2011 19:25
quelle
1

Das einzige spezielle Feature der main-Methode ist es, dem Compiler mitzuteilen, wo die Programmausführung beginnen soll. Ansonsten verhält es sich wie jede andere Klassenmethode und hat Zugriff auf private Variablen wie jede andere Klassenmethode.

    
Benjamin Gale 16.01.2011 19:26
quelle
-2

Weil main statisch ist und Ihre Klasse nicht instanziiert wurde.

Sie haben z. B. kein Ferrari-Objekt, auf das Sie zugreifen können. Sie müssen ein Ferrari-Objekt erstellen und dann auf seine Mitglieder zugreifen. statisches Haupt ist eine spezielle statische Funktion. Sie können es sich als eine Art von getrennt vorstellen, wenn Sie wollen. Also, wenn Sie Ihre Hauptmethode außerhalb von Ferrari verschoben haben, würden Sie erwarten, dass Sie eine Instanz von Ferrari erstellen müssten, um es zu verwenden ... das Gleiche gilt hier.

    
AbstractDissonance 16.01.2011 19:27
quelle

Tags und Links