Unterschied zwischen nicht-statischen und statischen Klassen

Status
Nicht offen für weitere Antworten.
J

jago

Gast
Hi,

Ich benutze oft nested Klassen in meinem Code - Erweiterungen von:

DefaultListCellRenderer
ItemListener
AbstractAction

usw.

Ich frage mich wo der Unterschied liegt ob ich diese als

Code:
private final class
private final static class

definiere? Was macht das static? Was passiert wenn ich das static weglasse. Wann benutzt man was und warum?

Danke,
jago
 

foobar

Top Contributor
Das static bewirkt hier, daß die innere Klasse nur in der Toplevel Klasse deklariert ist, aber ansonsten keine Beziehung zu der äußeren Klasse hat.
Wenn du eine nicht statische innere Klasse instanziieren willst, brauchst du immer eine Instanz der äußeren Klasse. Bei der statischen inneren Klasse ist das nicht der Fall.
Probier das einfach mal aus. Instanziiere mal aus einer anderen Toplevel Klasse eine statische innere Klasse einer anderen Toplevel Klasse, dann siehste den Unterschied.
 
G

Guest

Gast
foobar hat gesagt.:
Das static bewirkt hier, daß die innere Klasse nur in der Toplevel Klasse deklariert ist, aber ansonsten keine Beziehung zu der äußeren Klasse hat.
Wenn du eine nicht statische innere Klasse instanziieren willst, brauchst du immer eine Instanz der äußeren Klasse. Bei der statischen inneren Klasse ist das nicht der Fall.
Probier das einfach mal aus. Instanziiere mal aus einer anderen Toplevel Klasse eine statische innere Klasse einer anderen Toplevel Klasse, dann siehste den Unterschied.

kann ich mir denken. Ob statisch oder nicht soll es sich um Hilfsklassen handeln, die ausserhalb nicht sichtbar sein sollen. D.h. die Frage diese Klassen von Ausserhalb zu instanzieren stellt sich erst gar nicht.

Wenn ich diese Hilfsklassen als statisch definiere, muessen alle Attribute der Toplevel Klasse auf die es zugreift ebenfalls statisch sein. Das Gegenteil ist auch der Fall - wenn meine Toplevel vor allen nicht statische Attribute verwendet, dann muessen alle nested Klassen die darauf zugreifen nicht-statisch sein.

Ich frage mich welche Entscheidung die cleverere ist und ob man einen der beiden Wege spaeter bereut?

Danke,
jago
 

foobar

Top Contributor
Statische Member sollte man nur in ausnahme Fällen verwenden. Wenn die innere Klasse nur in der Toplevel Klasse verwendet wird, solltest du die innere als nicht statisch deklarieren ausser du willst die beiden Klassen vorsorglich entkoppeln.
 

tfa

Top Contributor
foobar hat gesagt.:
Statische Member sollte man nur in ausnahme Fällen verwenden. Wenn die innere Klasse nur in der Toplevel Klasse verwendet wird, solltest du die innere als nicht statisch deklarieren ausser du willst die beiden Klassen vorsorglich entkoppeln.

Eine Nested Class sollte immer als static deklariert werden, wenn dies möglich ist (also die Exemplare keine Referenz auf die äußere Klasse benötigen). Man sollte vorsorglich natürlich immer seine Klassen entkoppeln, außerdem gibt es einen (wenn auch kleinen) Performance-Vorteil.
Wenn die innere Klasse nur in der dazugehörigen Top-Level-Klasse gesehen werden soll, musst du sie eben auch noch private machen.
Eine statische Member-Klasse ist übrigens keine Inner Class, sondern nur eine Nested Class.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U 2dgraphics unterschied zwischen .scale und AffineTransform.getScaleInstance AWT, Swing, JavaFX & SWT 4
Arif AWT Unterschied zwischen RED und red AWT, Swing, JavaFX & SWT 4
S Unterschied zwischen id und fx:id AWT, Swing, JavaFX & SWT 5
Psypsy Swing SwingWorker unterschied zwischen setProgress und process AWT, Swing, JavaFX & SWT 2
J Unterschied zwischen SwingWorker und Threads AWT, Swing, JavaFX & SWT 4
M Unterschied zwischen paintComponent() und paint()? AWT, Swing, JavaFX & SWT 4
U Was ist der Unterschied von paint und paincomponent? AWT, Swing, JavaFX & SWT 3
U was bewirkt die methode fill und unterschied zu anderen fill Methoden in 2dgraphics? (Java)? AWT, Swing, JavaFX & SWT 6
it_is_all Swing Button, ComboBox,... -- Unterschied: NetBeans Design <-> Ausführung AWT, Swing, JavaFX & SWT 2
S JavaFX Unterschied MouseEvent und ActionEvent AWT, Swing, JavaFX & SWT 3
K Swing unterschied JTextField und JLabel AWT, Swing, JavaFX & SWT 7
F Chart-Unterschied Java 7 und Java 8 AWT, Swing, JavaFX & SWT 3
B Unterschied Farbmodell und BufferedImageType AWT, Swing, JavaFX & SWT 4
T Swing JTextArea, JTextPane, JEditorPane...Unterschied?! AWT, Swing, JavaFX & SWT 3
B Unterschied JFrame/Applet AWT, Swing, JavaFX & SWT 12
T Unterschied AWT SWT Swing AWT, Swing, JavaFX & SWT 8
D Unterschied JPanel/Canvas AWT, Swing, JavaFX & SWT 3
G Unterschied Java 5.0 und java 1.4, bzw 1.3 AWT, Swing, JavaFX & SWT 4
S Unterschied Frame / JFrame ? AWT, Swing, JavaFX & SWT 2
M JFrame unterschied beim Erstellen! AWT, Swing, JavaFX & SWT 2
M JavaFX Abstand zwischen AnchorPane und Labels in dem HBox halten AWT, Swing, JavaFX & SWT 1
S JavaFX Fehler zwischen View und Controller bei MouseEvent (MVC) AWT, Swing, JavaFX & SWT 13
missy72 JavaFX TableView Spalte zwischen den Zeilen AWT, Swing, JavaFX & SWT 5
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
Z Swing Kann man denn abstand zwischen zwei Buttons berechnen AWT, Swing, JavaFX & SWT 5
M Kommunikation zwischen zwei Stages AWT, Swing, JavaFX & SWT 0
T JavaFX - Datenübergabe zwischen Scenes AWT, Swing, JavaFX & SWT 8
S JavaFX Unterschiede zwischen Scene Builder 2.0 und der ausgeführten App AWT, Swing, JavaFX & SWT 17
Informatiknoob AWT Zahlenraten (eine Zahl zwischen 1 und 10) AWT, Swing, JavaFX & SWT 1
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
ralfb1105 JavaFX Daten zwischen Controller "austauschen" AWT, Swing, JavaFX & SWT 65
L Wörter zwischen zwei Grenzen einlesen. AWT, Swing, JavaFX & SWT 13
P Zwischen verschiedenen Panels wechseln AWT, Swing, JavaFX & SWT 3
M Schnittpunkte zwischen zwei Graphics2D Elemente ermitteln. AWT, Swing, JavaFX & SWT 5
O Focus zwischen Chat und Spiel wechselns AWT, Swing, JavaFX & SWT 3
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
D Swing Kommunikation zwischen zwei GUI's AWT, Swing, JavaFX & SWT 2
L JavaFX Verbindung zwischen Beschreibung und Listener (Codebehind Klasse) AWT, Swing, JavaFX & SWT 4
D Zwischen Null-Layouts wechseln AWT, Swing, JavaFX & SWT 2
K Wie kann ich eine Variable zwischen Tab Klassen weitergeben ? AWT, Swing, JavaFX & SWT 7
S JavaFX (Best Practise) Daten zwischen Controllern austauschen AWT, Swing, JavaFX & SWT 1
P 2D-Grafik Bogen(Arc) zwischen zwei Punkten zeichnen AWT, Swing, JavaFX & SWT 2
P Drag & Drop zwischen Panels AWT, Swing, JavaFX & SWT 0
N Swing CardLayout: Problem beim Wechsel zwischen den JPanels AWT, Swing, JavaFX & SWT 3
B Vertikale Größenänderung zwischen zwei Widgets AWT, Swing, JavaFX & SWT 2
T Swing Kompatibilitätsproblem zwischen Swing und JavaFX AWT, Swing, JavaFX & SWT 4
S Verzögerung zwischen Cursorbewegung einbauen AWT, Swing, JavaFX & SWT 1
3 Swing Vertikaler Separator zwischen JMenu's AWT, Swing, JavaFX & SWT 2
D JGridLayout zwischen Zeilen bestimmter Abstand AWT, Swing, JavaFX & SWT 3
F Swing JAVA GUI Übergabe von Werten zwischen mehreren Fenstern/Klassen AWT, Swing, JavaFX & SWT 10
B Datenübergabe zwischen Tabs und Daten speichern AWT, Swing, JavaFX & SWT 2
B Kommunikation zwischen zwei Fenstern und vorübergehende Speicherung der Eingaben AWT, Swing, JavaFX & SWT 4
B Linie zwischen 2 Elementen AWT, Swing, JavaFX & SWT 5
D animierte kameraansicht zwischen gezeichneten objekten AWT, Swing, JavaFX & SWT 4
B Swing JMenu zwischen anderen Componenten AWT, Swing, JavaFX & SWT 4
F Swing Ladebildschirm zwischen zwei SWING Frames AWT, Swing, JavaFX & SWT 11
T JTabbedPane - neuen Tab zwischen zwei anderen Tabs hinzufügen AWT, Swing, JavaFX & SWT 2
GUI-Programmer JWindow zwischen den Desktopbild und Dektopverknüpfungen AWT, Swing, JavaFX & SWT 16
propra Schnittpunkt zwischen Objekt und Kante finden AWT, Swing, JavaFX & SWT 24
H Swing Wechsel zwischen Frames AWT, Swing, JavaFX & SWT 6
S Swing Zwischenräume zwischen JPanels AWT, Swing, JavaFX & SWT 4
A Daten umherschieben zwischen zwei Klassen AWT, Swing, JavaFX & SWT 40
X zwischen 2 JPanels "elegant" wechseln AWT, Swing, JavaFX & SWT 3
B LayoutManager Positionierung zwischen zwei Layoutkomponenten AWT, Swing, JavaFX & SWT 2
N Swing DnD zwischen zwei JTrees AWT, Swing, JavaFX & SWT 2
G Unterschiedliche Pfadangabe zu Icons zwischen JApplet und JWindow? AWT, Swing, JavaFX & SWT 2
D JTabel: Überschrift, Abstand zwischen Tabellen, Spalten-Farbe ändern AWT, Swing, JavaFX & SWT 2
G Swing MigLayout: Lücken zwischen Elementen entfernen AWT, Swing, JavaFX & SWT 2
F Variablen zwischen Frames AWT, Swing, JavaFX & SWT 5
V Swing JLabel zwischen 2 JPanel hin- und herbewegen. AWT, Swing, JavaFX & SWT 12
E Drag&Drop zwischen 2 Listen AWT, Swing, JavaFX & SWT 5
M SWT DND zwischen zwei TreViewern in beide Richtungen AWT, Swing, JavaFX & SWT 10
buntuswalus Swing Datentransfer zwischen JPanels AWT, Swing, JavaFX & SWT 18
P Swing Beziehungen zwischen 3 Klassen AWT, Swing, JavaFX & SWT 4
R Swing Kommunikation zwischen Panels AWT, Swing, JavaFX & SWT 2
S Schnittstelle zwischen Haupt und Nebenfenster AWT, Swing, JavaFX & SWT 17
algorismi Unterscheiden zwischen zwei JLists AWT, Swing, JavaFX & SWT 5
F JCombobox zwischen setEditable true und false switchen AWT, Swing, JavaFX & SWT 2
I Swing JPanel Tab zwischen GUI Elementen AWT, Swing, JavaFX & SWT 6
L Swing Kommunikation zwischen JMenuBar und anderen Componenten AWT, Swing, JavaFX & SWT 2
data89 Verbindungslinien zwischen Formen auf einer "Zeichenfläche" AWT, Swing, JavaFX & SWT 2
DeeDee0815 SWT Text Widget: Zwischen Single und Password umschalten AWT, Swing, JavaFX & SWT 3
G Variblenwert zwischen zwei Klassen übergeben AWT, Swing, JavaFX & SWT 3
G Gap zwischen JButton-Rand und JButton-Icon verändern AWT, Swing, JavaFX & SWT 2
T Kommunikation zwischen Zwei GUI-Klassen AWT, Swing, JavaFX & SWT 2
T Kommunikation zwischen zwei jFrames AWT, Swing, JavaFX & SWT 4
T GridLayout, zu wenig Platz zwischen Widgets AWT, Swing, JavaFX & SWT 3
S Abstand zwischen Labeln auf 0 setzen AWT, Swing, JavaFX & SWT 6
G Datenaustausch zwischen zwei JFrames AWT, Swing, JavaFX & SWT 3
O Zwischen mehreren Bildern wechseln AWT, Swing, JavaFX & SWT 6
T JTextField, der nur Werte zwischen 100 und 1000 zulässt AWT, Swing, JavaFX & SWT 28
M Linie zwischen JComponents AWT, Swing, JavaFX & SWT 5
G Abstand zwischen den Buttons in einer Toolbar AWT, Swing, JavaFX & SWT 3
G Drag&Drop zwischen JTables AWT, Swing, JavaFX & SWT 2
P Unterscheiden zwischen Mautasten-Druck? AWT, Swing, JavaFX & SWT 3
B Abstand zwischen einzelnen Elementen einstellen AWT, Swing, JavaFX & SWT 2
I Drag and Drop zwischen zwei JTables AWT, Swing, JavaFX & SWT 5
N JTable Abstand zwischen einzelnen Spalten AWT, Swing, JavaFX & SWT 6
K JFreeChart: Platz zwischen Balken AWT, Swing, JavaFX & SWT 3
G Zwischen Panels in einem JFrame wechseln AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben