Object - Array

Neue Frage »

Auf diesen Beitrag antworten »
Java_Beginner Object - Array

Meine Frage:
Hallo zusammen,

ich frage mich die ganze Zeit, warum ich bei meinem Code immer nur die Speicheradresse ausgegeben bekomme?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
package object_test;

public class Object_Test 
{
    public static void main(String[] args) 
    {
        Object [] obj = new Object [1];
        obj[0] = new Teller (4);
        System.out.println(obj[0]);
    }
}

class Teller
{
    private int durchmesser; 
    public Teller (int durchmesser)
    {
        this.durchmesser = durchmesser; 
    }
}


Meine Ideen:
Vielen Dank für Eure Hilfe.
 
Auf diesen Beitrag antworten »
eulerscheZahl

Du musst in Teller die Funktion toString() überschreiben.
Auf diesen Beitrag antworten »
Java_Beginner

Vielen Dank für die Antwort.

Hier einmal mein neuer, funktionierender Code:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:

package object_test;

public class Object_Test 
{
    public static void main(String[] args) 
    {
        Object [] obj = new Object [1];
        obj[0] = new Teller (4);
        System.out.println(obj[0].toString());
    }
}

class Teller
{
    private int durchmesser; 
    public Teller (int durchmesser)
    {
        this.durchmesser = durchmesser; 
    }

    public String toString ()
    {
        return "" + durchmesser;
    }
}





Drei Fragen hätte ich dazu:

1) Wenn ich in der toString() - Methode nur return durchmesser mache bekomme ich einen Fehler (was auch logisch ist, da ich damit ja einen Integerwert zurückgeben würde). Ist es erlaubt hier einfach einen empty-String davorzusetzten?

2) Warum benötige ich in der main-Funktion noch einmal ein System.out.println() um die toString () - Methode auszugeben? Ich dachte immer, dass toString das gleich wie System.out.println() ist?

3) Woher weiß ich, wann die toString()-Funktion verwendet werden muss? Und wie genau funktioniert das mit dem Überschreiben?
Auf diesen Beitrag antworten »
eulerscheZahl

1) Java führt hier einen impliziten Cast durch: String + int = String + (String)int
besser wäre String.valueOf(durchmesser) - da ersparst du dir die Stringkonkatenation.

2) toString() gibt nur einen String zurück. Den kannst du dann je nach Lust und Laune auf die Console ausgeben, in eine Textdatei ausgeben, bei GUI in ein Label schreiben, vorlesen lassen, .... Das ist also viel flexibler.

3) du überschreibst toString() dann, wenn du eine textuelle Beschreibung der Instanz haben willst.
Da stellt sich die Frage, warum nicht eine Methode print() schreiben.
In der main geht auch einfach System.out.println(obj[0]);, der Aufruf von toString() klappt implizit. Das ist bei print() nicht der Fall.

und üblicherweise stellt man ein @Override voran, wenn man eine Methode überschreibt.
 
Auf diesen Beitrag antworten »
Java_Beginner

Vielen Dank für deine Hilfe :-)
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »