Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
unten stehender code ausschnitt verwirrt mich, in der main methode passiert soweit ich weiss folgendes:
1. instanz der klasse liste wird erzeugt
2. instanz der klasse daten wird erzeugt
3. die methode add der klasse liste wird aufgerufen, als parameter wird die instanz d der klasse daten übergeben
- passt das soweit?
in der add methode steht im else ausführungsblock: ptr.setNext( uebergabe_d )
ptr wird am anfang der klasse liste deklarierst als typ daten, bedeutet das nun das ptr auch eine instanz der klasse daten ist?
Code:
Liste.java
public class Liste
{
private Daten head, ptr = null;
public void add( Daten uebergabe_d )
{
if (head == null)
{
head = uebergabe_d; // head wird der speicherbereich zugewiesen an dem die instanz der klasse liste beginnt
ptr = head;
}
else
{
ptr.setNext( uebergabe_d );
ptr = uebergabe_d;
}
}
public static void main (String[] args)
{
Liste l;
l = new Liste();
Daten d;
d = new Daten(100);
l.add( d );
...........
}
-------------------------------------------------------------------------------------------
Daten.java
public class Daten
{
private long daten = 0;
private Daten next = null;
public Daten( long parameter_daten )
{
daten=parameter_daten;
}
public void setNext( Daten uebergabe_next )
{
next = uebergabe_next;
}
........
}
Der Titel ist wirklich günstig gewählt. :?
Und bis jetzt steht in diesem Thread nur wenig, was uns weiter bringt.
Die Frage-Antworten von metalfan äußerst animierend, mich hier hinein zu knien und zu helfen...
Bei mir steht dieser Thread auf der Abschussliste.
ptr.setNext(uebergabe_d); = instanz einer klasse.methode(parameter)
für ptr wurde in diesem fall aber nur speicherplatz reserviert, weiss jetzt nicht so recht was ptr in diesem moment ist?
es soll wohl eine instanz der klasse Daten sein...aber wo wird die instanz erstellt?
der if-Teil wird ja nur ausgeführt, wenn head NULL ist. Da head und ptr Klassenvariablen sind, sind sie für die Lebenszeit des Objekts auch zugreifbar.
Wenn also bei ersten Aufruf von add noch keine Instanz vorhanden ist, dann wird sie durch die Übergabe an die Methode angelegt. Eben durch die schon erwähnte Zuweisung.
Gibts es in dem Objekt Liste schon ein existierendes Objekt "head", so wird nicht neu übergeben(das wäre ja überschreiben), sondern es wird der else Zweig ausgeführt.