Verständnisfrage zu Instanzen/Objekten

peter420

Mitglied
Liebe Java-Experten,

Ich habe eine Schiffssimulation mit GUI, die nun endlich einwandfrei funktioniert. Nur so ganz verstehen tu ich nicht was da passiert :oops:

Ich habe eine Klasse "Bootsimulator", die mir 3 Typen von Schiffen erzeugt, z.B:
Java:
public Segler getSegler() {
		Segler segler = new Segler();
		segler.setKanonenAnz(4);
		segler.bewegen();
		segler.angreifen();
		return segler;
	}
in der Methode instanziere ich praktisch die Klasse "Segler", setze die Kanonenanzahl und rufe die Methoden bewegen() und angreifen() der Klasse "Segler" auf. Dann gebe ich mit "return" das Objekt "segler" zurück - ist meine Logik korrekt?

Dann habe ich die Klasse "GUI", die Buttons für jeden Schiffstyp enthält, die man klicken kann. In der "GUI" deklariere ich am Anfang die Variable
Java:
private Segler segler;
Dann kommt noch folgendes (außer den GUI-Elementen):
Java:
class ButtonListener implements ActionListener{
		public void actionPerformed(ActionEvent e) {
				segler = simulator.getSegler();
				label.setText(segler.bewegen() + "\n" + segler.angreifen());
				label.setIcon(seglerbild);
			}
	}
Frage: Was mache ich genau, wenn ich am Anfang schreibe "private Segler segler" - ich lege eine Variable segler vom Objekt Segler an?? Ist das korrekt?
Im Listener weise ich der Variable "segler" mit "segler = simulator.getSegler();" das instanzierte Objekt aus meiner Methode "getSegler()" zu, das ist mir wieder klarer.

Sind meine Überlegungen so klar/nachvollziehbar?

Vielen Dank für eure Hilfe nochmals!
Peter
 

Java-Freak

Bekanntes Mitglied
wenn du am anfang schreibst private Segler segler dann erzeugst du eine variable vom typ Segler. Genauso wie es halt Variablen vom Typ String oder int gibt so gibt es auf welche vom Typ Segler. Diese Variable ist aber eine Klassenvariable, da sie nicht in ieiner methode oder so erzeugt waden sondern mittn in der klasse uns somit kann von überall in der klasse darauf zugegriffen werden. Wenn du die variable erzeugst hat sie aber erstmal den Wert null, d.h. sie is komplett leer. Später weißt du ihr dann einen wert zu, nämlich den wert eines Seglers, den du von der methode getSegler() bekommst, die ihn erzeugt und verschiedene methoden aufruft
 

peter420

Mitglied
Hallo Java Freak,

vielen Dank für die Erklärungen! Wird alles ein bissl klarer für mich - ich les mir in meinem "schlauen" Java-Buch noch was zu Klassenvariablen durch, kann ja auch nicht schaden.

Schöne grüße,
Peter
 

Nicer

Bekanntes Mitglied
also wenndu private oder public und dann einen datentyp und danach einen namen hinschreibst erzeugst du immer eine variable.

zb:

Java:
private JButton button1;

Erzeugt ein Objekt mit dem Namen button1 des Datentyps JButton auf privater ( nur für diese klasse zugänglicher ) Ebene.

Ansonsten wurde ja alles erklärt :)
 

hdi

Top Contributor
Ich misch mich auch mal ein und werf den Klugscheisser-Mode an ;)
Bitte nich übel nehmen, aber gerade bei Anfängern können kleine Falschaussagen schnell zu groben Verständnisfehlern führen...

Diese Variable ist aber eine Klassenvariable

Das ist nicht richtig, das ist eine Instanzvariable.
Klassenvariablen sind statisch. Der Unterschied zwischen Instanz- und Klassenvariablen ist enorm.

Code:
private JButton button1;
Erzeugt ein Objekt mit dem Namen button1 des Datentyps JButton auf privater ( nur für diese klasse zugänglicher ) Ebene.

Auch das stimmt nicht, hier wird lediglich eine Variable angelegt.
Der Inhalt der Variablen ist zu diesem Zeitpunkt
Code:
null
, also nichts. Kein Objekt.
Objekte erzeugt man mit dem new-Operator, bzw. im speziellen Fall des Datentyps String
auch mit einer Direktzuweisung eines String-Literals.

Klugscheiss-Mode OFF.
lg :D
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Och, so klugscheißerisch finde ich das gar nicht. Im Gegenteil. Ich hatte den Eindruck, dass genau diese "Ungenauigkeit" eine der Ursachen für die Frage war. Wenn man sowas hat wie
Java:
private JButton startButton = new JButton("Beenden");
dann sagt (oder denkt) man manchmal so vor sich hin: "Joa, startButton ist ein Button" (im Sinne von: "...ist ein Button-Objekt"), aber nur weil es halt auf Dauer lästig-krampfig wird, zu sagen (oder zu denken): "startButton ist eine Referenztyp-Instanzvariable vom Typ 'JButton', deren Wert eine Referenz auf einen JButton ist" :autsch: Aber zumindest sollte man SO lange diese krampfig präzise Formulierung verwenden (oder eine angemessen vereinfachte Variante) bis es nicht mehr nötig ist.

Sorry. Du wirst also deine gesamten Tutorial-Videos mit obiger Formulierung nachsynchronisieren müssen :(

:joke:
 

hdi

Top Contributor
Sorry. Du wirst also deine gesamten Tutorial-Videos mit obiger Formulierung nachsynchronisieren müssen.

I don't think so :pueh: Zeig mir ein Bsp aus meinem Kurs wo ich eine Variable mit null-Referenz als Objekt bezeichne. Vorallem bevor ich erklärt habe was ein komplexer Datentyp ist und was so eine Variable genau abspeichert.

Und selbst wenn du eins findest - ich nehm grad eh nen komplett neuen Kurs auf :D
 

Nicer

Bekanntes Mitglied
ja gut , ich muss zugeben ich war gestern nacht nicht mehr ganz so bei der sache , danke für die korrekturen :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
A Verständnisfrage Java Basics - Anfänger-Themen 12
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
P Verständnisfrage: PageFactory.initElements Java Basics - Anfänger-Themen 2
R do while Schleife Verständnisfrage Java Basics - Anfänger-Themen 2
G while.next() Verständnisfrage Java Basics - Anfänger-Themen 16
Vivien Kurze Verständnisfrage zu Java Point aus java.awt.* Java Basics - Anfänger-Themen 5
C Erste Schritte Anfänger Verständnisfrage zum Compiler Java Basics - Anfänger-Themen 31
T Verständnisfrage Objekt Getter Setter Java Basics - Anfänger-Themen 102
K Verständnisfrage Server/Client BufferedReader, PrintWriter Java Basics - Anfänger-Themen 2
Der Grütz Verständnisfrage zu Übung aus Java Kurs - Schaltjahr bestimmen Java Basics - Anfänger-Themen 2
J Verständnisfrage zu throws neben Funktionen Java Basics - Anfänger-Themen 2
TimoN11 Verständnisfrage bei Aufgabe Java Basics - Anfänger-Themen 2
P Verständnisfrage zum Mapping Java Basics - Anfänger-Themen 3
M Java Version Verständnisfrage Java Basics - Anfänger-Themen 16
M Verständnisfrage zu eine Online Aufgabe Java Basics - Anfänger-Themen 7
T Verständnisfrage zur Konsolenausgabe Java Basics - Anfänger-Themen 2
M Verständnisfrage zu Generics Java Basics - Anfänger-Themen 7
D Verständnisfrage zur Modellierung einer HDD Java Basics - Anfänger-Themen 17
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
S Verständnisfrage lokale Ordnerpfade Java Basics - Anfänger-Themen 1
T Verständnisfrage zu Interfaces Java Basics - Anfänger-Themen 7
J Java Starthilfe Verständnisfrage Aufgabe Java Basics - Anfänger-Themen 2
O Anfänger, Verständnisfrage Java Basics - Anfänger-Themen 3
C Verständnisfrage zu Modulo Java Basics - Anfänger-Themen 6
C Verständnisfrage bezüglich der Do-While Schleife Java Basics - Anfänger-Themen 9
L Verständnisfrage - Speicherabbild Java Basics - Anfänger-Themen 4
melly_ Verständnisfrage zu args Java Basics - Anfänger-Themen 3
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
K Verständnisfrage eines Abschnitts Java Basics - Anfänger-Themen 6
K Rekursion Verständnisfrage Java Basics - Anfänger-Themen 19
S Modell View Controller Verständnisfrage Java Basics - Anfänger-Themen 24
J Superklassen Konstruktor Verständnisfrage Java Basics - Anfänger-Themen 1
JavaTalksToMe Erste Schritte Println-Frage (Verständnisfrage) Java Basics - Anfänger-Themen 1
R Verständnisfrage zu Objekten u. Übergabeparameter Java Basics - Anfänger-Themen 8
G Collections Verständnisfrage zur For-Each-Schleife Java Basics - Anfänger-Themen 7
b1ck Interface Verständnisfrage zum GUI mit "swing" Java Basics - Anfänger-Themen 1
kilopack15 Verständnisfrage zur Verwendung von notify() bei Threads Java Basics - Anfänger-Themen 2
G Verständnisfrage zu for-each Java Basics - Anfänger-Themen 4
DontFeedTheTroll Erste Schritte Verständnisfrage zu If-Anweisung Java Basics - Anfänger-Themen 7
K Rekursion-Verständnisfrage Java Basics - Anfänger-Themen 4
J Java Server Pages - Verständnisfrage Java Basics - Anfänger-Themen 2
Z Verständnisfrage Anfängerprogramm Java Basics - Anfänger-Themen 0
T Verständnisfrage Zuweisungs-/arithmet. Operatoren Java Basics - Anfänger-Themen 2
G Methoden Verständnisfrage zur Methoden Java Basics - Anfänger-Themen 7
LionAge Kapselung, Verständnisfrage zur Objekterzeugung Java Basics - Anfänger-Themen 4
Z Verständnisfrage zum Multithreading Java Basics - Anfänger-Themen 3
R OOP / Verständnisfrage zum Konstuktor (siehe code) Java Basics - Anfänger-Themen 7
gamebreiti Verständnisfrage zu contains() Java Basics - Anfänger-Themen 10
A Verständnisfrage - Koordinatenumrechnung Java Basics - Anfänger-Themen 9
J Erste Schritte Verständnisfrage im Bezug auf das (richtige) Programmieren Java Basics - Anfänger-Themen 5
M Verständnisfrage zu JUnit Tests und private Methoden Java Basics - Anfänger-Themen 3
H Verständnisfrage Array Java Basics - Anfänger-Themen 2
I Interface Verständnisfrage Interfaces (Bsp.: Enumeration) Java Basics - Anfänger-Themen 2
I Verständnisfrage zu BridgePattern, Verwedung von super() Java Basics - Anfänger-Themen 4
P Verständnisfrage Java Basics - Anfänger-Themen 3
kaoZ Best Practice Verständnisfrage Listener bei lokalen Objekten Java Basics - Anfänger-Themen 8
D Input/Output Verständnisfrage Verzeichnis-/Dateiliste erstellen & Dateikonvertierung Java Basics - Anfänger-Themen 1
S Verständnisfrage zu Anweisungen und deren Wirkung Java Basics - Anfänger-Themen 7
H Verständnisfrage für oder Anweisung Java Basics - Anfänger-Themen 8
E Threads Verständnisfrage bzgl. Threads und Sleep Java Basics - Anfänger-Themen 2
T Erste Schritte Verständnisfrage: Getter und Setter Methoden Java Basics - Anfänger-Themen 3
H Verständnisfrage zu Java-Ausgabe Java Basics - Anfänger-Themen 3
S Verständnisfrage Java Basics - Anfänger-Themen 2
N Verständnisfrage Code Java Basics - Anfänger-Themen 8
B Verständnisfrage Java Basics - Anfänger-Themen 2
H Interface Comparable Verständnisfrage Java Basics - Anfänger-Themen 6
B Verständnisfrage Codezeile Java Basics - Anfänger-Themen 7
B Verständnisfrage:Beispielprogramm BlueJ Java Basics - Anfänger-Themen 3
M Kurze Verständnisfrage zu einer Java Aufgabe Java Basics - Anfänger-Themen 12
K Erste Schritte Kleine Verständnisfrage Java Basics - Anfänger-Themen 12
R Verständnisfrage Referenzvariablen in array Java Basics - Anfänger-Themen 3
M Verständnisfrage: Objekt erzeugen u. zuweisen Java Basics - Anfänger-Themen 16
I OOP Verständnisfrage zu Singelton Pattern Java Basics - Anfänger-Themen 21
M Verständnisfrage zu JPanel Java Basics - Anfänger-Themen 3
S Verständnisfrage: Exception Gebrauch Java Basics - Anfänger-Themen 2
R Verständnisfrage NPE Java Basics - Anfänger-Themen 5
M Verständnisfrage zur Zahlenumwandlung (Dezimal-->Dual) Java Basics - Anfänger-Themen 25
P Java Objekte - Verständnisfrage Java Basics - Anfänger-Themen 9
N Verständnisfrage zu folgendem Programm Java Basics - Anfänger-Themen 2
L Grundlegende Verständnisfrage Hasmap Referenzen Java Basics - Anfänger-Themen 4
S Verständnisfrage zu Interfaces Java Basics - Anfänger-Themen 2
VfL_Freak Verständnisfrage zur Klasse "TIMER" Java Basics - Anfänger-Themen 7
M Verständnisfrage im Umgang mit Map Java Basics - Anfänger-Themen 10
K Verständnisfrage zu int.length und String.length() Java Basics - Anfänger-Themen 4
G 2D Array gleichsetzen verständnisfrage Java Basics - Anfänger-Themen 2
M kleine und einfache Verständnisfrage Java Basics - Anfänger-Themen 3
N verständnisfrage java.util.Calendar Java Basics - Anfänger-Themen 4
G Datentypen bits, bytes, chars - Verständnisfrage Java Basics - Anfänger-Themen 5
E Verständnisfrage zu Shutdownhook Java Basics - Anfänger-Themen 5
D Verständnisfrage: Java und MySql Java Basics - Anfänger-Themen 3
F Rekursion Verständnisfrage Java Basics - Anfänger-Themen 6
A Exception Verständnisfrage: Exceptions während, einer Statischenzuweisung abfangen Java Basics - Anfänger-Themen 10
Z Comparator Verständnisfrage Java Basics - Anfänger-Themen 5
D Verständnisfrage zu Funktionen Java Basics - Anfänger-Themen 6
H Verständnisfrage Persistenz Java Basics - Anfänger-Themen 10
neurox Verständnisfrage zu Threads Java Basics - Anfänger-Themen 4
E Verständnisfrage Syntax: frame.getContentPane().add(button) Java Basics - Anfänger-Themen 11
Y Kleine Verständnisfrage zum Thema dynamische Polymorphie Java Basics - Anfänger-Themen 3
F Verständnisfrage Objekt instanzierung / Polymorphie Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben