Warum können innere Klassen keine static-members haben?

Status
Nicht offen für weitere Antworten.

mouk

Aktives Mitglied
Hi!

Ich weiß, wenn man die innere Klasse statisch macht, kann man auch statische Methoden und Variablen verwenden.

Ich verstehe aber die Logik nicht, warum es die Java-Designer nicht erlaubt haben, auch in einer normalen inneren Klasse statische Variablen und Methoden zu verwenden.

Kann mir das jemand erklären?

fg,mouk
 

byte

Top Contributor
Das sind zwei paar Schuhe. Wenn Du eine innere Klasse schreibst, die nicht statisch ist, dann halten Objekte dieser inneren Klasse implizit immer eine Referenz auf die umschließende Klasse. Deshalb kannst Du auch nicht schreiben:

Code:
MyInnerClass b = new MyInnerClass();   //geht nur, wenn die innere Klasse statisch ist

Du musst erst ein Objekt der umschließenden Klasse erzeugen und kannst dann ein Objekt der inneren Klasse erzeugen, weil diese implizit immer eine Referenz auf die umschließende Klasse hält. Das ist auch ganz logisch, denn Du kannst ja von der inneren Klasse auf die umschließende Klasse zugreifen.

Code:
MyEnclosingClass a = new MyEnclosingClass();
MyInnerClass b = a.new MyInnerClass();   //geht auch, wenn die innere Klasse nicht statisch ist

Das gilt wie gesagt nur, wenn die innere Klasse nicht statisch ist. Wenn sie statisch ist, kannst Du auch statische Methoden und Felder erzeugen und kannst die Objekte der inneren statischen Klasse (Nested Class) direkt erzeugen. Natürlich kannst Du dann auch nicht mehr auf die umschließende Klasse zugreifen (bzw. nur auf statische Methoden/ Felder), denn in diesem Fall existiert keine Referenz darauf.

Ich hoffe, das war einigermaßen klar. ;)
 
B

bygones

Gast
byto hat gesagt.:
Das sind zwei paar Schuhe. Wenn Du eine innere Klasse schreibst, die nicht statisch ist, dann halten Objekte dieser inneren Klasse implizit immer eine Referenz auf die umschließende Klasse. Deshalb kannst Du auch nicht schreiben
daher sollte man wenn möglich stets immer static inner klassen nutzen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
C Methoden können nicht auf Instanzvariable der Klasse zugreifen Java Basics - Anfänger-Themen 3
B Warum können super() und this() nicht gemeinsam in einem Konstruktor verwendet werden? Java Basics - Anfänger-Themen 7
D Können if Anweisungen aufeinander aufbauen? Java Basics - Anfänger-Themen 1
Elaurin Erste Schritte effektiv lernen mit Java umgehen zu können? Java Basics - Anfänger-Themen 5
N Sicherheitsnummer erstellen und verändern können Java Basics - Anfänger-Themen 1
J Hinzufügen eines Objekts in eine Liste, um später dann nochmal auf das Objekt zugreifen zu können Java Basics - Anfänger-Themen 8
JokerBlacky Klassen Klasse Queue Klasse mit Attributen anhängen und auslesen können Java Basics - Anfänger-Themen 4
R warum kann System.out.println(..) etwas, was Swing-Elemente Nicht können ? Java Basics - Anfänger-Themen 11
H Methoden können nicht verwendet werden Java Basics - Anfänger-Themen 10
R Eine Arrayliste in XML abspeichern und laden können Java Basics - Anfänger-Themen 7
D Methoden Wie können Klassen auf Klassenfremde Objekte zugreifen? Java Basics - Anfänger-Themen 7
W Wie kann man diesen Code in einen Code umwandeln, der folgendes können sollte? Java Basics - Anfänger-Themen 1
S Methoden Linked List Methoden können nicht aufgerufen werden Java Basics - Anfänger-Themen 1
J Interface Bubblesort soll Arrays beliebiger Referenztypen sortieren können. Java Basics - Anfänger-Themen 5
B Anwender soll mathematische Funktion eingeben können, Einfachster Fnktionsplotter Java Basics - Anfänger-Themen 4
J Können mehere Threads parallel eine Datei lesen? Java Basics - Anfänger-Themen 4
X Muss man Java können um Jython nutzen zu können? Java Basics - Anfänger-Themen 14
K mehrer applets sollen sich gegenseitig verständigen können Java Basics - Anfänger-Themen 3
F Können Klasse auch Werte liefern? Java Basics - Anfänger-Themen 3
2 Alle Werte die mit n Würfeln mit m Seiten geworfen werden können in ein n Dimensionales Array Java Basics - Anfänger-Themen 15
E Statische Member können nicht vererbt werden? Java Basics - Anfänger-Themen 10
B OOP Objekt klonen (Grundzustand), um in Editor "Abbrechen" zu können Java Basics - Anfänger-Themen 4
K Txt statt in TextArea in JTable einlesen und bearbeiten können Java Basics - Anfänger-Themen 4
G ein programm nicht mehrmals starten können Java Basics - Anfänger-Themen 6
R Klassenattribut nur 1 mal setzen können Java Basics - Anfänger-Themen 7
T können überschriebene methoden andere zugruffsrechte besitze Java Basics - Anfänger-Themen 2
R Buttons können sich bewegen und JButtons nicht? Java Basics - Anfänger-Themen 5
frau-u Können Interfaces von Klassen erben? Java Basics - Anfänger-Themen 3
Detlef Bosau nichtstatische Innere Klasse, this Pointer. Java Basics - Anfänger-Themen 47
L B+Baum innere Knoten erstellen Java Basics - Anfänger-Themen 3
S Erste Schritte Innere Klassen und Interfaces Java Basics - Anfänger-Themen 2
J static verschachtelte Klassen und innere Klassen Java Basics - Anfänger-Themen 1
B Klassen Anonyme innere Klasse Java Basics - Anfänger-Themen 4
O Innere Klassen nutzen? Java Basics - Anfänger-Themen 4
F Klassen Innere Klasse - Problem Java Basics - Anfänger-Themen 2
D Annonyme Innere Klasse: Listen mit geradem Index ausgeben Java Basics - Anfänger-Themen 6
J Klassen Innere Klassen Java Basics - Anfänger-Themen 5
T Klassen Innere Klasse Java Basics - Anfänger-Themen 3
H Threads Problem bei Thread + Innere Klasse Java Basics - Anfänger-Themen 3
S Innere Klassen in Java Java Basics - Anfänger-Themen 4
A Klassen Innere Klassen, verkettete Liste Java Basics - Anfänger-Themen 9
D static, äußere/innere Klasse Java Basics - Anfänger-Themen 4
D Unterschied innere Klasse/ anonyme innere Klasse Java Basics - Anfänger-Themen 7
G innere Klassen Java Basics - Anfänger-Themen 2
G Innere Klasse static oder nicht Java Basics - Anfänger-Themen 9
berliner Klassen Vererbung und Zugriff auf innere private Variable Java Basics - Anfänger-Themen 22
M [Einfaches Beispiel] Problem mit innere Klassen Java Basics - Anfänger-Themen 4
P In innere Klassen Variablen übergeben Java Basics - Anfänger-Themen 10
S Innere Klasse, Wertübergabe (String) Java Basics - Anfänger-Themen 7
N enum als innere Klasse Java Basics - Anfänger-Themen 7
P Methode übergibt Parameter an innere Methode Java Basics - Anfänger-Themen 2
T Zugriff auf innere Klasse von aussen Java Basics - Anfänger-Themen 2
J Innere Maße des Fensters Java Basics - Anfänger-Themen 3
A innere Klassen Java Basics - Anfänger-Themen 6
G Innere klasssen unde "extends" klassen definieren, Java Basics - Anfänger-Themen 2
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Abstrakte Klassen - Notation Java Basics - Anfänger-Themen 9
Detlef Bosau Nachladen von Klassen zur Laufzeit Java Basics - Anfänger-Themen 24
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
C Array von Klassen Java Basics - Anfänger-Themen 2
monsterherz 2 Klassen daher Probs mit dem Dateinamen Java Basics - Anfänger-Themen 9
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 9
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
D Klassen Klassen Kommunikation Java Basics - Anfänger-Themen 12
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
L Best Practice Annotierte Klassen im Classpath herausfinden Java Basics - Anfänger-Themen 1
P Mit dem Scanner Klassen aufrufen Java Basics - Anfänger-Themen 3
O Klassen Zusammenspiel zwischen 2 Klassen Java Basics - Anfänger-Themen 1
K Zweite Ausgabe von vererbten Klassen Java Basics - Anfänger-Themen 3
Speedrunner klassen aufrufen Java Basics - Anfänger-Themen 41
M Log4J (v2) nachträglich in allen Klassen hinzufügen Java Basics - Anfänger-Themen 9
D importieren eigener Klassen Java Basics - Anfänger-Themen 12
W Wo ist der Wurm in meinem Grundverständnis von Klassen? Java Basics - Anfänger-Themen 22
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
elsaaaaaa Wochentag als String ausgeben mit JDK Klassen Java Basics - Anfänger-Themen 6
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
Z Mehtode bei Start des Programms ausführen (Klassen übergreifend) Java Basics - Anfänger-Themen 12
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
TimoN11 Java Klassen Global einbinden Java Basics - Anfänger-Themen 1
B Inventar als einzelne Klassen anlegen? Java Basics - Anfänger-Themen 12
G Java Klassen und Instanzmethoden Java Basics - Anfänger-Themen 15
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben