Objekterzeugung im Konstruktor - Mehrfach gleiche Referenzvariable?

Jack159

Bekanntes Mitglied
Hallo,

Ich habe hier eine Übungsaufgabe, die ich bearbeitet habe. Teils musste ich dazu in die Musterlösung schauen, die mich etwas verwundert hat. In der Übung geht es eigentlich darum, Objekte zu klonen, aber meine Frage bezieht sich auf den Konstruktor der Klasse Auto.

Im Konstruktor der Klasse Auto steht folgendes:
Java:
reifen = new AutoReifenSatz(typ2, anzahl);
Bedeutet also: Jedes mal, wenn ich ein Auto-Objekt erstelle, wird mir auch ein AutoReifenSatz-Objekt erstellt. Das Autoobjekt hat dann die Referenz zu diesem AutoReifenSatz.
Was ich aber irgendwie unlogisch finde ist, wenn ich mehr als 1 Autoobjekt erzeuge (Z.b. 3 Autos). Dann gäbe es doch auch 3 AutoReifenSatzObjekte, allerdings alle mit der selben Referenzvariable "reifen". Wieso funktioniert das?
Ich kann ja auch nicht z.b. 3 Integer-Variablen erstellen, die alle den selben Namen haben:
Java:
int x = 5;
int x = 5421;
int x = 7;



Hier der Code:

Java:
public class AutoReifenSatz {

	private String typ;
	private int anzahl;
	
	public AutoReifenSatz(String typ, int anzahl) {
	
		this.typ = typ;
		this.anzahl = anzahl;
	
	}
	
	
	public String getTyp(){
	
		return typ;
	}
	
	
	public int getAnzahl(){
	
		return anzahl;
	}
	
	
	void setTyp(String typ){
	
		this.typ = typ;
	}
	
	
	void setAnzahl(int anzahl){
	
		this.anzahl = anzahl;
	}
	
}

Java:
public class Auto implements Cloneable {

	private String typ;
	private AutoReifenSatz reifen;
	
	public Auto(String typ, String typ2, int anzahl) {
		this.typ = typ;
		reifen = new AutoReifenSatz(typ2, anzahl);
	}
	
	void setTyp(String typ) {
		this.typ = typ;
	}
	
	void setAutoReifenSatz(AutoReifenSatz reifen) {
		this.reifen = reifen;
	}
	
	public String getTyp() {
		return typ;
	}
	
	public AutoReifenSatz getReifen() {
		return reifen;
	}
	
	public String toString() {
		return "Autotyp: "+this.typ+"\n Reifenanzahl: "+reifen.getAnzahl()+"\n Reifentyp: "+reifen.getTyp()+"\n";
	}
	
	public Auto clone() throws CloneNotSupportedException {
		return (Auto)super.clone();
	}

}

Java:
public class App {
	
	public static void main(String[] args) throws CloneNotSupportedException {
		
		Auto Audi = new Auto("Audi", "SommerReifen", 4);
		Auto Mercedes = Audi.clone();
		Mercedes.setTyp("Mercedes");
		Mercedes.getReifen().setTyp("Winterreifen");
		
		System.out.println(Audi.toString());
		System.out.println(Mercedes.toString());
	}

}
 

Templarthelast

Bekanntes Mitglied
Die Objekte sind lokal d.h. jedes Auto heißt anders und legt seine eigenen Reifen/Reifensatzobjekte an, ob mich gleichem Namen oder nicht. Das ist ähnlich wie dies:

Java:
String name = "Peter";

String Name(String name) {
return name;
}
System.out.println(name) // Peter
System.out.println(Name(Klaus)) // Klaus

Hierbei gibt es auch 2 Variablen mit dem gleichem Namen und Typ doch trotzdem werden beide nicht überschrieben sondern existieren nebeneinander weiter.
 

Patneu

Mitglied
Wo liegt denn das Problem?

Du kannst innerhalb einer Klasse (z.B. Auto) nicht mehrere Referenzen mit dem gleichen Namen haben, das ist richtig. Aber jedes Objekt, dass du mit dieser Klasse erstellst, darf seine eigene Referenz "reifen" haben. Davon, dass es noch andere Objekte geben könnte, die auch eine Referenz "reifen" haben, weiß das Objekt ja nichts. ;)



Meistens wird es so erklärt: Die Klasse "Auto" ist gewissermaßen nur die Vorlage, die Konstruktionszeichnung, mit deren Hilfe du ein Auto herstellen kannst. Ein bestimmtes Auto-Objekt, das mit dieser Vorlage erstellt wird(also z.B. mit
Java:
Auto audi = new Auto("Audi", "SommerReifen", 4)
), ist dann tatsächlich das Auto.

Es wäre natürlich Unsinn, wenn die Klasse Auto mehrere "reifen"-Referenzen hätte, denn ein Auto braucht ja nur einen Satz Reifen. Jedes Auto-Objekt hat aber natürlich seinen eigenen Satz Reifen und damit seine eigene "reifen"-Referenz.
 

Jack159

Bekanntes Mitglied
Ahh ok, also praktisch so ähnlich wie bei Objektvariablen. In der Autoklasse steht ja z.b.
Java:
private String typ;
Jedes Autoobjekt hat eine eigene Variable "typ".

Habe es verstanden, danke euch ;)
 

JCODA

Top Contributor
Kurz will ich noch was gesagt haben:

Meiner Meinung nach müsste die Klasse hier "Autosammlung" heißen, denn wenn man eine Anzahl festlegen kann, ist das Objekt eben kein Auto, sondern eine Autosammlung.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Welche Werte bei Objekterzeugung eingeben? Java Basics - Anfänger-Themen 2
S Klassen statische Objekterzeugung vor Konstruktoraufruf??? Java Basics - Anfänger-Themen 6
N This bei objekterzeugung Java Basics - Anfänger-Themen 6
J Wert bei Objekterzeugung verändern Java Basics - Anfänger-Themen 12
S "Sichtbarkeitsmodifizierer" und Objekterzeugung Java Basics - Anfänger-Themen 1
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
H MyID3 Problem bei Objekterzeugung Java Basics - Anfänger-Themen 4
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
Z Vererbung Objekterzeugung Java Basics - Anfänger-Themen 4
LionAge Kapselung, Verständnisfrage zur Objekterzeugung Java Basics - Anfänger-Themen 4
L Objekterzeugung Java Basics - Anfänger-Themen 3
J Klassen Fehler mit Parameter des Konstruktors bei einer Objekterzeugung Java Basics - Anfänger-Themen 5
D Verschachtelte Objekterzeugung Java Basics - Anfänger-Themen 6
E Objekterzeugung in JAVA Java Basics - Anfänger-Themen 7
F OOP Objekterzeugung in IF-Struktur Java Basics - Anfänger-Themen 2
L Objekterzeugung Unterschied..? Java Basics - Anfänger-Themen 6
C Vererbung "extends" umgehen mittels Objekterzeugung?! Java Basics - Anfänger-Themen 29
N Verständnisfrage zur Objekterzeugung Java Basics - Anfänger-Themen 5
G objekterzeugung Java Basics - Anfänger-Themen 7
S Methode für Objekterzeugung Java Basics - Anfänger-Themen 8
G objekterzeugung...absoluter anfänger :) Java Basics - Anfänger-Themen 27
S problem bei objekterzeugung Java Basics - Anfänger-Themen 8
W Null-Pointer trotz Konstruktor? Java Basics - Anfänger-Themen 9
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
T Schlüsselworte Schlüsselwort this im Konstruktor Java Basics - Anfänger-Themen 3
frager2345 Warum muss ich hier im Konstruktor meine Exeption nicht abfangen ? Java Basics - Anfänger-Themen 4
J Konstruktor Java Basics - Anfänger-Themen 18
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
G Welche Attribute kommen in den Konstruktor? Java Basics - Anfänger-Themen 5
M wird der Konstruktor nicht als 1. ausgeführt? Java Basics - Anfänger-Themen 13
G Konstruktor und update Java Basics - Anfänger-Themen 4
K Kopier-Konstruktor Java Basics - Anfänger-Themen 6
S Default Konstruktor Java Basics - Anfänger-Themen 7
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
J Vier gewinnt in Java,Spieler Konstruktor Java Basics - Anfänger-Themen 8
kxrdelis Konstruktor für ein Rechtwinkliges Dreieck Java Basics - Anfänger-Themen 10
Zeppi OOP Bruch kürzen im Konstruktor Java Basics - Anfänger-Themen 2
HorstSchröder Konstruktor mit Initialwert Java Basics - Anfänger-Themen 1
C Konstruktor ab serialisiertem Objekt Java Basics - Anfänger-Themen 4
J Input/Output Konstruktor ergänzen, der zur Datei mit einem Objekt passt Java Basics - Anfänger-Themen 0
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
B Konstruktor mit Array als Parameter Java Basics - Anfänger-Themen 3
G Variablen Array Länge über den Konstruktor definieren Java Basics - Anfänger-Themen 4
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
C Interface und Konstruktor Java Basics - Anfänger-Themen 1
H Generische Konstruktor Java Basics - Anfänger-Themen 12
MiMa Seltsames Verhalten im Konstruktor Java Basics - Anfänger-Themen 6
S Konstruktor passt nicht zum Rest Java Basics - Anfänger-Themen 11
C Unbekannter "Konstruktor"?? Java Basics - Anfänger-Themen 10
W OOP Warenlager mit Array(Konstruktor, Methoden) Java Basics - Anfänger-Themen 39
R Objekt in Konstruktor ist nicht zulässig Java Basics - Anfänger-Themen 5
A Mit einer Methode den Konstruktor aufrufen? Java Basics - Anfänger-Themen 2
B Warum können super() und this() nicht gemeinsam in einem Konstruktor verwendet werden? Java Basics - Anfänger-Themen 7
K Konstruktor für ein Objekt mit Zugriffsmethoden Java Basics - Anfänger-Themen 7
H Unterschied Konstruktor und Klassenname x = new Klassenname; Java Basics - Anfänger-Themen 3
B Klassen Array Parameter im Konstruktor? Java Basics - Anfänger-Themen 4
E Konstruktor mit Methode Java Basics - Anfänger-Themen 7
E ArithmeticException im Konstruktor Java Basics - Anfänger-Themen 4
S Konstruktor, Objekte Java Basics - Anfänger-Themen 4
F Konstruktor richtig implementiert? Frage zu Benutzereingaben... Java Basics - Anfänger-Themen 9
W Typecastin im Konstruktor? Java Basics - Anfänger-Themen 2
A Variablen Variablenwert über Konstruktor ändern Java Basics - Anfänger-Themen 3
F Arrays im Konstruktor Java Basics - Anfänger-Themen 5
C Konstruktor mit und ohne Parameterliste Java Basics - Anfänger-Themen 13
L Instanzvariablen, Veerbung, Konstruktor Java Basics - Anfänger-Themen 32
E Best Practice Konstruktor mit bestehender Intanz der gleichen Klasse aufrufen Java Basics - Anfänger-Themen 4
E Plausibilitätsprüfung in dem Konstruktor mit Ausnahmebehandlung Java Basics - Anfänger-Themen 8
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 7
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 0
D Compiler-Fehler Konstruktor von Superklasse übernehmen Java Basics - Anfänger-Themen 1
P Counter im Konstruktor Java Basics - Anfänger-Themen 11
J toString-Methode in Verbindung mit varArgs-Konstruktor Java Basics - Anfänger-Themen 18
I Einträge in den Konstruktor Java Basics - Anfänger-Themen 3
Aprendiendo [JAVA-Syntax] (int... variable) bei einem Konstruktor Java Basics - Anfänger-Themen 8
J Superklassen Konstruktor Verständnisfrage Java Basics - Anfänger-Themen 1
G Int-Array im Konstruktor Parameter Java Basics - Anfänger-Themen 37
T Datentypen Warum mit Konstruktor Objektvariablen initalisieren? Java Basics - Anfänger-Themen 19
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
P Konstruktor. Java Basics - Anfänger-Themen 4
D Best Practice Objekt automatisch im Konstruktor füllen? Java Basics - Anfänger-Themen 9
D Objekt oder Konstruktor Java Basics - Anfänger-Themen 2
F Java default Konstruktor Java Basics - Anfänger-Themen 1
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
T Konstruktor mit Referenzdatentypen Java Basics - Anfänger-Themen 5
H Klassen Konstruktor Parameter als Instanzvariablen zwischen speichern... Java Basics - Anfänger-Themen 11
T setter im Konstruktor einbauen? Java Basics - Anfänger-Themen 8
R ArrayList im Konstruktor. Java Basics - Anfänger-Themen 4
T Konstruktor Probleme Java Basics - Anfänger-Themen 3
J Wie lässt sich der Konstruktor einer Klasse einer Funktion einer Klasse nutzen. Java Basics - Anfänger-Themen 4
S Variable, die im Konstruktor gesetzt wird, wird nicht gefunden vom Compiler. Java Basics - Anfänger-Themen 4
C Generic im Konstruktor Java Basics - Anfänger-Themen 1
F Privater Konstruktor und statische Methoden Java Basics - Anfänger-Themen 4
W Konstruktor von FileInputStream nicht gefunden Java Basics - Anfänger-Themen 18
B Methoden Konstruktor im Konstruktor aufrufen Java Basics - Anfänger-Themen 2
N Aufgabe: Pizza Konstruktor mit mehreren beliebigen Durchmesser/Preiskombinationen Java Basics - Anfänger-Themen 8
K arraygröße durch variablen Konstruktor? Java Basics - Anfänger-Themen 7
K ArrayList in Konstruktor - wie späterer Zugriff Java Basics - Anfänger-Themen 2
G Verwendung von Konstruktor Java Basics - Anfänger-Themen 8
X Übergabeparameter Konstruktor (File) Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Neue Themen


Oben