Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » Object - Array » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Object - Array
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Java_Beginner
unregistriert
Object - Array Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.
09.01.2016 20:41
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Du musst in Teller die Funktion toString() überschreiben.

__________________
Syntax Highlighting fürs Board (Link)
10.01.2016 09:40 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Java_Beginner
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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?
10.01.2016 10:10
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

__________________
Syntax Highlighting fürs Board (Link)
10.01.2016 13:18 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Java_Beginner
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Vielen Dank für deine Hilfe :-)
11.01.2016 21:49
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » Object - Array