Klassen Referenzen auf Klassen / Objekte

Terry12

Aktives Mitglied
hi,
zum Thema Dekorator Muster hab ich den Code gesehen:
Code:
Getraenk getränk3 = new HausMischung();
getränk3 = new Soja(getränk3);
getränk3 = new Schoko(getränk3);
getränk3 = new Milchschaum(getränk3);

alle Objekte rechts erben von Getränk... nun allerdings find ich komisch das getränk3 eine Referenz auf Hausmischung ist, in der nächsten Zeile dann erzeuge ich ein neues Soja, übergeb diesem die referenz auf getränk3 zu und lasse danach getränk 3 auf soja zeigen, stimmt die Reihenfolge überhaupt?

oder wird erst der Zeiger getränk 3 auf das neue Objekt Soja umgebogen, und dann versucht als Parameter die alte referenz getränk3 zu übergeben? dann würde er sich ja selbst übergeben :lol:

oder stimmt die erste Version so? kann mir das einer erläutern?
 

knilch

Bekanntes Mitglied
Hi,
alle Objekte rechts erben von Getränk... nun allerdings find ich komisch das getränk3 eine Referenz auf Hausmischung ist, in der nächsten Zeile dann erzeuge ich ein neues Soja, übergeb diesem die referenz auf getränk3 zu und lasse danach getränk 3 auf soja zeigen, stimmt die Reihenfolge überhaupt?
getränk3 ist eine Instanz der Klasse Hausmischung
Im Konstruktor von Soja übergibst du ja eine Getränk- Instanz.
Java:
public class Soja extends ZusatzDekorierer {
   Getraenk getraenk;
	
   public Soja(Getraenk getraenk) {
      this.getraenk = getraenk;
   }
   ...
}
Innerhalb der Soja-Klasse wird dann diese Instanz mit einem neuen Preis dekoriert.
Java:
public double preis() {
	return 0.25 + getraenk.preis();
}
Mit
Java:
getraenk3 = new Soja(getraenk3);
bekommst du dann eine neue Instanz der Klasse Getränk zurück. Diese Instanz wird dann wieder getraenk3 zugewiesen.
Java:
Getraenk getränk3 = new HausMischung();
Diese neue Instanz ist dann noch mit Zusätzen dekoriert. In dem Beispiel ist es der Preis für die Getränk Instanzen.
 
Zuletzt bearbeitet:

Terry12

Aktives Mitglied
ok aber wie war das nochmal, wenn ich eine Referenz einer Oberklasse habe und erzeuge eine Unterklasse und die Referenz zeigt auf diese Unterklasse, kann ich dann nur Methoden der Oberklasse aufrufen, bzw. benutzen? oder findet intern ein cast statt oder wie, oder gilt das nur für erzeugte objekte der Oberklasse , deren Referenz ich dann später auf erzeugte Objekte einer Unterklasse zeige?
 

knilch

Bekanntes Mitglied
Hi,
Also wenn du eine Instanz der Basisklasse erstellst, kannst du in dieser Instanz nur auf die Methoden der Basisklassen zugreifen.
Wenn du eine eine Instanz einer ErweiterteKlasse erstellst, dann kann diese Instanz auf die Methoden der Basis und der ErweiterteKlasse zugreifen.
Wenn du die Instanz der ErweiterteKlasse der Instanz der Basisklasse zuweisen willst, dann findet ein upcasting automatisch statt.
Wenn du eine Instanz der Baisklasse einer ErweiterteKlasse zuweisen willst, dann muss downcasting gemacht werden.
In etwa so:
Java:
public static void main(String[] args) {
	Basisklasse b = new Basisklasse();
	b.setString("Ein String der Instanz Basisklasse");
	
	ErweiterteKlasse e = new ErweiterteKlasse();
	e.setString("Ein String der Instanz ErweiterteKlasse");
	e.setInt(1);
	
	System.out.println(b);
	System.out.println(e);
	
	b = e;	       // upcasting
	e = (ErweiterteKlasse)b; // downcast

	System.out.println(b);
	System.out.println(e);
}
 
Zuletzt bearbeitet:

Terry12

Aktives Mitglied
ok aber das war nicht die Frage, ich wollte wissen wie das ist mit den Methoden die den jeweiligen Klassen zu eigen ist, ob man die noch benutzen kann je nachdem welche Referenz eienr Klasse auf mein jeweilges Objekt zeigt, da war doch noch irgendwas ...
wenn ich eine Oberklassereferenz auf ein Unterklasseobjekt zeigt, kann ich ja durch polymorphie immer die jew. Eigenschaften der Unterklasse ausführen, weiss nimmer wie das mit dem casting zu objekten war, von unterklasse nach oberklasse usw. ob dann noch die methoden der unterklasse ausführbar sind, ich glaube nicht..
 

Joose

Top Contributor
Java:
public class Kleidung {
   private String name;

   public String getName() {
      return name;
   }
}

public class Jacke extends Kleidung {
   private boolean zip;

   public void oeffneZip() {
      zip = true;
   }
}

public class Schuhe extends Kleidung {
   private boolean gebunden;

   public void bindeSchuhe() {
      gebunden = true;
   }
}
......

Kleidung k = new Kleidung("eine kurze hose");
k.getName(); // Aufruf ohne Probleme möglich
k.oeffneZip(); // nicht möglich da oeffneZip eine Methode der Klasse Jacke ist, wir hier aber eine Referenz auf ein Objekt Kleidung haben

k = new Jacke("eine schwarze jacke");
k.getName(); // Aufruf ohne Probleme möglich
k.oeffneZip(); // nicht möglich. da "k" nur auf ein Objekt von Kleidun verweist. Ob dieses Objekt nun eine Jacke oder ein Schuh ist, weiß man an dieser stelle nicht. Daher werden nur Methode der entsprechenden Klasse -> Kleidung angeboten

Jacke j = new Jacke("eine schwarze Jacke");
j.getName(); // Aufruf ohne Probleme möglich, da "getName" in der Superklasse definiert ist
j.oeffneZip(); // Aufruf möglich, da "j" auf ein Objekt der Klasse Jacke zeigt
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Hab ich dass so richtig erklärt (Objekte und Referenzen)? Java Basics - Anfänger-Themen 5
B Erste Schritte Frage zu Instanzierung und Referenzen Java Basics - Anfänger-Themen 8
M Referenzen zuweisen und wird gleichzeitig ausgeführt Java Basics - Anfänger-Themen 6
B JaxB - Unique Name updaten / Referenzen in XML Java Basics - Anfänger-Themen 0
B Objekt kopieren und sämtliche Referenzen von diesem Objekt? Java Basics - Anfänger-Themen 3
B JaxB - Referenzen erstellen? Java Basics - Anfänger-Themen 2
Zrebna Frage zum "Referenzen-konzept" in Java Java Basics - Anfänger-Themen 8
B Datenbank: Entity mit vielen Referenzen? Ansatz so ok? Java Basics - Anfänger-Themen 8
scratchy1 Referenzen Java Basics - Anfänger-Themen 32
O Referenzen Java Basics - Anfänger-Themen 2
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
A Variablen Referenzen Java Basics - Anfänger-Themen 6
A GUI-Bedienelemente mit Zeiger/Referenzen-Array veralten Java Basics - Anfänger-Themen 4
K Operatoren 2D Int Array auf Null-Referenzen prüfen Java Basics - Anfänger-Themen 18
F Referenzen zwischen Methoden Java Basics - Anfänger-Themen 5
J OOP Ein Fahrrad - zwei Besitzer: Zwei Referenzen auf ein Objekt Java Basics - Anfänger-Themen 43
C Referenzen zu Instanzen einer Klasse im Array Java Basics - Anfänger-Themen 8
K Collections Auf Referenzen in ArrayList zugreifen? Java Basics - Anfänger-Themen 3
B ArrayList.clear - Daten in allen Referenzen weg Java Basics - Anfänger-Themen 2
L Grundlegende Verständnisfrage Hasmap Referenzen Java Basics - Anfänger-Themen 4
C OOP Referenzen-Problem Java Basics - Anfänger-Themen 3
N Referenzen Problem Java Basics - Anfänger-Themen 2
K Referenzen - 2ter Versuch Java Basics - Anfänger-Themen 17
M Instanzen, Referenzen und Collections Java Basics - Anfänger-Themen 3
C Referenzen in Java Java Basics - Anfänger-Themen 11
J Referenzen vergleichen Java Basics - Anfänger-Themen 8
M Referenzen verschieben Java Basics - Anfänger-Themen 2
J Mehrere Referenzen auf ein Objekt Java Basics - Anfänger-Themen 6
M Referenzen Java Basics - Anfänger-Themen 11
G Netzwerk: RMI Objekt-Referenzen Java Basics - Anfänger-Themen 2
I clone() und Referenzen Java Basics - Anfänger-Themen 25
A Referenzen zu festen Werten machen? Java Basics - Anfänger-Themen 5
F Referenzen Java Basics - Anfänger-Themen 7
H Problem mit Events bzw. Referenzen Java Basics - Anfänger-Themen 4
M Zugriff auf Textfelder über Referenzen? Java Basics - Anfänger-Themen 3
F ArrayList! Pointer, Referenzen! Java Basics - Anfänger-Themen 4
K Verständnisfrage Collection, ArrayList und Referenzen Java Basics - Anfänger-Themen 4
H Begriff: Objekt enthält Referenzen Java Basics - Anfänger-Themen 3
J Referenzen Java Basics - Anfänger-Themen 5
P HashSet und Referenzen Java Basics - Anfänger-Themen 9
G Speicherung von Referenzen auf Instanzen Java Basics - Anfänger-Themen 5
T Referenzen. Java Basics - Anfänger-Themen 5
Z Referenzen in LinkedList Java Basics - Anfänger-Themen 3
F Referenzen in Java - Fehlerpotenzial ! Java Basics - Anfänger-Themen 5
G Instanzen und Referenzen Java Basics - Anfänger-Themen 5
G array auf null-referenzen überprüfen ! Java Basics - Anfänger-Themen 9
G Referenzen Java Basics - Anfänger-Themen 5
D Initialisierung von Klassen-Objekte Java Basics - Anfänger-Themen 47
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
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
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
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
S Klassen instanziieren und verwenden von Getter und Setter Java Basics - Anfänger-Themen 4
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
H Methoden in großen Klassen gruppieren oder auslagern? Java Basics - Anfänger-Themen 10
G Abstrakte Klassen Java Basics - Anfänger-Themen 11
Y Klassen Klassen und Objekte Java Basics - Anfänger-Themen 3
Y Klassen Klassen und Objekte mit set und get Java Basics - Anfänger-Themen 0
A Generischen Klassen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben