Objektfragen

Von: , Frage gestellt am Fr, 3. Jul 2009

Hallo zusammen

Habe Mühe für mich die Interpretation der folgenden Zeilen zu machen. Ich führe zuerst einige Quellcode-zeilen auf:

public class LinkedList
{
private Node firstNode;
private Node lastNode;
private int size;

public int size()
{
return size;
}

public void add(Object value)
{
Node newNode = new Node(value);
if (size() == 0) {
this.firstNode = newNode;
}

public Object remove(int i)
{
if (size == 1)
{
removeNode = firstNode;
firstNode = null;
lastNode = null;
}
}
...
}

public class Node
{
private final Object value;
private Node nextNode;
public Node(Object value)
{
this.value = value;
}
...
}

Wird in der Zeile private Node firstNode; im Konstruktor der LinkedList Klasse ein neues Node Objekt erstellt, also den Konstruktor der Klasse Node aufgerufen?
Wird in der Zeile private Node lastNode; nochmals ein Node Objekt erstellt?

Was läuft aber da in der Nodeklasse danach ab. Da ist wiederum private Node nextNode;??

Wäre um Hilfe dankbar
Herzliche Grüsse
Bruno

3 Antworten zu dieser Frage

  1. Antwort von nach 44 Minuten 0 hilfreich
    Re: Objektfragen

    Ein neues Objekt wird immer erst erzuegt, wenn Du den Konstruktor aufrufst also z.B.

    MyObject obj = new MyObject();

    Das passiert in Deinem Code aber nicht in der Deklaration.

    • Antwort von nach 2 Stunden 0 hilfreich
      Re^2: Objektfragen

      Hallo
      ja das habe ich gesehen im Code wird erst später in der Methode add ein Node Objekt angelegt. Aber mir ist einfach nicht klar was bedeuten im Konstruktor die:

      private Node firstNode;
      private Node lastNode;

      sind dies Referenzen für ein Nodeobjekt welches später mit New erzeugt wird. Wobei ich finde sie passen auch nicht zu einem Nodeobjekt, denn Node hat im Konstruktor:
      private final Object value;
      private Node nextNode;
      public Node(Object value)

      Oder sind es Referenzen für ein neues LinkedList Objekt und erhalten einfach die Werte Null?

      Hoffe auf entwirrung meiner verwirrung.
      Grüsse
      Bruno

      • Antwort von nach 3 Stunden 0 hilfreich
        Re^3: Objektfragen

        ja das habe ich gesehen im Code wird erst später in der
        Methode add ein Node Objekt angelegt. Aber mir ist einfach
        nicht klar was bedeuten im Konstruktor die:

        private Node firstNode;
        private Node lastNode;
        Einfach nur, daß Deine Klasse zwei prvate Felder hat vom Typ Node, mit den Namen 'firstNode' und 'lastNode'. sind dies Referenzen für ein Nodeobjekt welches später mit New
        erzeugt wird. Wobei ich finde sie passen auch nicht zu einem
        Nodeobjekt, denn Node hat im Konstruktor:
        private final Object value;
        private Node nextNode;
        public Node(Object value)
        Die passen sehr gut. Deine List ist nämlich nur einfach verkettet. Jeder Node kennt seinen Vorgänger und Nachfolger, aber nur die Liste weiß, welcher der erste bzw. der letzt in der Reihe ist, sprich, wann einmal über die ganze Liste gegangen wurde. Oder sind es Referenzen für ein neues LinkedList Objekt und
        erhalten einfach die Werte Null?
        So lange sie nicht initialisiert werden, sollten sie null liefern. Darum geht es aber auch nicht. Wie Du schon sagtest, mußt Du Variablen, die einer Klasse zur Verfügung stehen referenzieren können. Genau das passiert in der Felddeklaration einer Klasse.

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!